Docker笔记—基础篇
字数 954 2025-08-29 08:31:54
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. 获取镜像
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
八、最佳实践
- 使用国内镜像源加速下载
- 为镜像添加有意义的标签
- 使用数据卷管理持久化数据
- 合理规划端口映射
- 定期清理无用镜像和容器
- 使用Dockerfile构建标准化镜像
- 为生产环境配置适当的安全策略
九、常见问题
- 删除镜像失败: 确保没有容器在使用该镜像
- 端口冲突: 检查主机端口是否已被占用
- 权限问题: 使用
sudo或将用户加入docker组 - 存储空间不足: 定期清理无用镜像和容器
- 网络连接问题: 检查防火墙和网络配置