一、环境准备与Docker安装
1.1 Windows11系统要求
Docker Desktop for Windows要求系统版本为Windows11专业版/企业版(版本号21H2及以上),并启用WSL2后端或Hyper-V虚拟化。建议配置8GB以上内存和4核CPU以获得最佳体验。
1.2 Docker Desktop安装
- 访问Docker官网下载Windows版安装包
- 双击安装程序,勾选”Add shortcut to desktop”选项
- 安装完成后启动Docker Desktop,首次运行会提示配置WSL2或Hyper-V
- 通过命令行验证安装:
docker version# 应显示Client和Server版本信息
1.3 配置镜像加速(可选)
在Docker Desktop设置中添加国内镜像源(如阿里云镜像):
- 进入Settings > Docker Engine
- 修改配置文件添加:
{"registry-mirrors": ["https://<your-mirror-id>.mirror.aliyuncs.com"]}
- 点击Apply & Restart生效
二、Docker镜像打包实战
2.1 创建Dockerfile
在项目目录下新建Dockerfile文件(无扩展名),示例内容:
# 使用官方Python基础镜像FROM python:3.9-slim# 设置工作目录WORKDIR /app# 复制依赖文件并安装COPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txt# 复制应用代码COPY . .# 暴露端口(根据实际需要修改)EXPOSE 8000# 定义启动命令CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]
2.2 构建镜像
在包含Dockerfile的目录执行:
docker build -t myapp:v1 .# 参数说明:# -t 指定镜像名称和标签# . 表示使用当前目录的Dockerfile
构建过程详解:
- 基础镜像下载:从Docker Hub拉取python:3.9-slim镜像
- 层缓存机制:每条RUN指令会生成一个镜像层,后续构建可复用
- 上下文传输:Docker守护进程接收构建上下文(当前目录)
- 最终镜像生成:包含所有指令执行结果的独立镜像
2.3 验证镜像
docker images# 应显示类似输出:# REPOSITORY TAG IMAGE ID CREATED SIZE# myapp v1 abc123456789 2 minutes ago 123MB
三、运行本地镜像测试
3.1 启动容器
docker run -d -p 8000:8000 --name myapp-container myapp:v1# 参数说明:# -d 后台运行# -p 端口映射(主机:容器)# --name 指定容器名称
3.2 验证服务
- 浏览器访问
http://localhost:8000 - 或使用curl测试:
curl http://localhost:8000
3.3 常见问题排查
- 端口冲突:修改
-p参数或停止占用端口的进程 - 依赖缺失:检查Dockerfile中的COPY指令是否完整
- 权限问题:在Linux子系统下运行可添加
--user参数
四、上传到私有镜像仓库
4.1 配置私有仓库
方案一:使用Docker Registry
docker run -d -p 5000:5000 --restart=always --name registry registry:2
方案二:使用阿里云/腾讯云等云服务
- 登录云平台容器服务控制台
- 创建个人版或企业版镜像仓库
- 获取仓库地址(如
registry.cn-hangzhou.aliyuncs.com)
4.2 标记镜像
docker tag myapp:v1 <your-registry>/myapp:v1# 示例(阿里云):docker tag myapp:v1 registry.cn-hangzhou.aliyuncs.com/my-namespace/myapp:v1
4.3 登录仓库
docker login <your-registry># 输入用户名密码(云服务需获取AccessKey)
4.4 推送镜像
docker push <your-registry>/myapp:v1# 推送过程会显示各层的上传进度
推送优化技巧:
- 使用
.dockerignore文件排除不必要的文件 - 分阶段构建减少最终镜像大小
- 启用镜像压缩(部分云服务商支持)
五、高级实践与最佳实践
5.1 多阶段构建示例
# 构建阶段FROM python:3.9 as builderWORKDIR /appCOPY requirements.txt .RUN pip install --user -r requirements.txt# 运行阶段FROM python:3.9-slimWORKDIR /appCOPY --from=builder /root/.local /root/.localCOPY . .ENV PATH=/root/.local/bin:$PATHCMD ["python", "app.py"]
5.2 镜像安全扫描
-
安装Docker Scan插件:
docker scan --version# 或通过Chocolatey安装:choco install docker-scan
-
执行扫描:
docker scan myapp:v1
5.3 自动化构建(CI/CD集成)
示例GitHub Actions配置:
name: Docker Image CIon: [push]jobs:build:runs-on: windows-lateststeps:- uses: actions/checkout@v2- name: Build Docker imagerun: docker build -t myapp:${{ github.sha }} .- name: Login to DockerHubuses: docker/login-action@v1with:username: ${{ secrets.DOCKER_USERNAME }}password: ${{ secrets.DOCKER_PASSWORD }}- name: Push to DockerHubrun: |docker tag myapp:${{ github.sha }} ${{ secrets.DOCKER_REPO }}/myapp:${{ github.sha }}docker push ${{ secrets.DOCKER_REPO }}/myapp:${{ github.sha }}
六、常见问题解决方案
6.1 Windows特有问题处理
-
WSL2网络问题:
wsl --shutdown# 重启Docker Desktop
-
文件权限错误:
在Dockerfile中添加:RUN chmod +x /app/entrypoint.sh
6.2 镜像上传失败排查
- 检查网络连接(特别是公司网络可能屏蔽仓库)
- 验证登录凭证是否正确
- 查看完整错误日志:
docker push --debug <your-registry>/myapp:v1
6.3 性能优化建议
- 使用
--compress参数减少上传数据量 - 合理设置镜像标签(建议包含构建时间)
- 定期清理未使用的镜像:
docker system prune -a
七、总结与扩展学习
通过本文的完整流程,开发者已经掌握了:
- Windows11下Docker环境的完整搭建
- 从Dockerfile编写到镜像构建的全过程
- 私有镜像仓库的配置与使用
- 常见问题的排查与解决
建议进一步学习:
- Docker Compose多容器编排
- Kubernetes集群部署
- 镜像签名与安全实践
- 跨平台镜像构建技巧
附录:常用Docker命令速查表
| 命令 | 用途 |
|———|———|
| docker build | 构建镜像 |
| docker run | 启动容器 |
| docker ps | 列出运行中容器 |
| docker images | 列出本地镜像 |
| docker rmi | 删除镜像 |
| docker system df | 查看磁盘使用情况 |
通过系统化的实践与学习,开发者可以高效地管理Docker镜像,为后续的容器化部署和微服务架构打下坚实基础。