Docker笔记—基础篇
字数 954 2025-08-29 08:31:54

Docker基础教学文档

一、Docker核心概念

1. Docker三大核心组件

  • Docker镜像(Image): 只读模板,用于创建容器的基础。由多个层(layer)组成。
  • Docker容器(Container): 轻量级沙箱,用于运行和隔离应用。
  • Docker仓库(Repository): 存储Docker镜像的地方,类似代码仓库。

2. 标识方式

  • 通过idname:tag来区分不同的镜像和容器。

二、Docker安装

1. 官方安装渠道

  • 官方文档: https://docs.docker.com/

2. 国内镜像源建议

  • 中科大镜像源: https://docker.mirrors.ustc.edu.cn

三、镜像操作

1. 获取镜像

docker pull kalilinux/kali-linux-docker
# 使用非官方仓库
docker pull hub.c.163.com/public/ubuntu:14.04

2. 列出镜像

docker images

输出字段说明:

  • REPOSITORY: 镜像来源仓库
  • TAG: 镜像标签
  • IMAGE ID: 唯一标识镜像的ID
  • CREATED: 创建时间
  • SIZE: 镜像大小

3. 添加镜像标签

docker tag kalilinux/kali-linux-docker:latest kalilinux:latest

4. 查看镜像详细信息

docker inspect kalilinux:latest

5. 查看镜像历史

docker history kalilinux:latest

6. 搜索镜像

docker search --filter=is-automated=true --filter=stars=3 kali

7. 删除镜像

# 删除标签
docker rmi kalilinux/kali-linux-docker:latest
# 强制删除镜像(包括所有标签)
docker rmi -f 8ececeaf404d

8. 创建镜像

基于已有容器创建

# 创建容器并安装软件
docker run -it kalilinux:latest /bin/bash
apt update && apt install metasploit-framework
exit

# 提交为新镜像
docker commit -m "install msf" -a "zeroyu" de573c5f5dc6 kalilinux:0.1

基于本地模板导入

docker import ...

9. 镜像导出与导入

导出镜像

docker save -o docker_for_msf.tar kalilinux:0.1
# 或
docker export 77e93d18a6a5 > test.tar

导入镜像

docker load --input docker_for_msf.tar
# 或
docker load < docker_for_msf.tar

10. 上传镜像

docker push kalilinux:0.1

四、容器操作

1. 容器创建与启动

创建容器(不自动启动)

docker create -it kalilinux:0.1

启动容器

docker start 2bc48b88a424

创建并启动容器

docker run kalilinux:0.1 /bin/echo 'zeroyu'

交互式运行容器

docker run -it kalilinux:0.1 /bin/bash

守护态运行容器

docker run -d kalilinux:0.1 /bin/sh -c "while true; do echo zeroyu; sleep 1; done"

2. 容器终止

docker stop 8888
docker start 073  # 重新启动
docker restart 073  # 先终止再启动

3. 进入容器

使用attach命令

docker attach stupefied_gates

使用exec命令

docker exec -it 77e93d18a6a5 /bin/bash

4. 删除容器

docker stop 77e93d18a6a5
docker rm 77e93d18a6a5

5. 容器导出与导入

导出容器

docker export -o test.tar 77e93d18a6a5

导入容器

docker import test.tar - test/kalilinux:v1.0

五、数据管理

1. 挂载本地目录

docker run -it -P --name db -v /tmp:/opt/tmp_test:rw kalilinux:0.1 /bin/sh

六、网络与端口

1. 端口映射

# 映射到任意端口
docker run -it -d -P kalilinux:v0.2

# 指定端口映射
docker run -it -d -p 5000:5000 kalilinux:v0.2

七、实用案例

1. 在Docker中使用Empire框架

# 启动Empire容器
docker run -it -d -p 5000:5000 kalilinux:v0.2

# 进入容器
docker attach container_id

# 启动Empire
cd /home/Empire
./empire

2. 设置监听器

(Empire) > listeners
(Empire: listeners) > uselistener http
(Empire: listeners/http) > set Name docker
(Empire: listeners/http) > set Host http://your_vps_ip:5000
(Empire: listeners/http) > execute

3. 生成Payload

(Empire: listeners) > usestager windows/launcher
(Empire: stager/windows/launcher) > set Listener docker
(Empire: stager/windows/launcher) > generate

八、最佳实践

  1. 使用国内镜像源加速下载
  2. 为镜像添加有意义的标签
  3. 使用数据卷管理持久化数据
  4. 合理规划端口映射
  5. 定期清理无用镜像和容器
  6. 使用Dockerfile构建标准化镜像
  7. 为生产环境配置适当的安全策略

九、常见问题

  1. 删除镜像失败: 确保没有容器在使用该镜像
  2. 端口冲突: 检查主机端口是否已被占用
  3. 权限问题: 使用sudo或将用户加入docker组
  4. 存储空间不足: 定期清理无用镜像和容器
  5. 网络连接问题: 检查防火墙和网络配置
Docker基础教学文档 一、Docker核心概念 1. Docker三大核心组件 Docker镜像(Image) : 只读模板,用于创建容器的基础。由多个层(layer)组成。 Docker容器(Container) : 轻量级沙箱,用于运行和隔离应用。 Docker仓库(Repository) : 存储Docker镜像的地方,类似代码仓库。 2. 标识方式 通过 id 或 name:tag 来区分不同的镜像和容器。 二、Docker安装 1. 官方安装渠道 官方文档: https://docs.docker.com/ 2. 国内镜像源建议 中科大镜像源: https://docker.mirrors.ustc.edu.cn 三、镜像操作 1. 获取镜像 2. 列出镜像 输出字段说明: REPOSITORY: 镜像来源仓库 TAG: 镜像标签 IMAGE ID: 唯一标识镜像的ID CREATED: 创建时间 SIZE: 镜像大小 3. 添加镜像标签 4. 查看镜像详细信息 5. 查看镜像历史 6. 搜索镜像 7. 删除镜像 8. 创建镜像 基于已有容器创建 基于本地模板导入 9. 镜像导出与导入 导出镜像 导入镜像 10. 上传镜像 四、容器操作 1. 容器创建与启动 创建容器(不自动启动) 启动容器 创建并启动容器 交互式运行容器 守护态运行容器 2. 容器终止 3. 进入容器 使用attach命令 使用exec命令 4. 删除容器 5. 容器导出与导入 导出容器 导入容器 五、数据管理 1. 挂载本地目录 六、网络与端口 1. 端口映射 七、实用案例 1. 在Docker中使用Empire框架 2. 设置监听器 3. 生成Payload 八、最佳实践 使用国内镜像源加速下载 为镜像添加有意义的标签 使用数据卷管理持久化数据 合理规划端口映射 定期清理无用镜像和容器 使用Dockerfile构建标准化镜像 为生产环境配置适当的安全策略 九、常见问题 删除镜像失败 : 确保没有容器在使用该镜像 端口冲突 : 检查主机端口是否已被占用 权限问题 : 使用 sudo 或将用户加入docker组 存储空间不足 : 定期清理无用镜像和容器 网络连接问题 : 检查防火墙和网络配置