Skip to content

Docker 学习计划

📋 学习目标

掌握 Docker 核心概念与实战技能,能够独立完成容器化应用的构建、部署与运维。


第一阶段:基础入门(第 1 周)

1.1 Docker 核心概念

  • [ ] 什么是容器?容器 vs 虚拟机的区别
  • [ ] Docker 架构:Docker Engine、Docker Daemon、Docker CLI
  • [ ] 核心概念:镜像(Image)、容器(Container)、仓库(Registry)
  • [ ] Docker 的底层技术:Namespace、Cgroups、UnionFS

1.2 环境安装与配置

  • [ ] Linux 下安装 Docker Engine
  • [ ] 配置镜像加速(腾讯云/阿里云镜像源)
  • [ ] 验证安装:docker versiondocker info
  • [ ] 了解 Docker Desktop(可选)

1.3 基础命令实操

  • [ ] 镜像操作:docker pulldocker imagesdocker rmidocker tag
  • [ ] 容器操作:docker rundocker psdocker stopdocker rm
  • [ ] 容器交互:docker exec -itdocker attachdocker logs
  • [ ] 容器导入导出:docker exportdocker importdocker savedocker load

练习任务:

拉取 Nginx 镜像,启动容器并通过浏览器访问默认页面;进入容器修改默认页面内容。


第二阶段:镜像构建(第 2 周)

2.1 Dockerfile 基础

  • [ ] Dockerfile 常用指令:FROMRUNCOPYADDWORKDIREXPOSECMDENTRYPOINT
  • [ ] CMD vs ENTRYPOINT 的区别与使用场景
  • [ ] COPY vs ADD 的区别
  • [ ] .dockerignore 文件的作用与编写

2.2 镜像构建最佳实践

  • [ ] 多阶段构建(Multi-stage Build):减小镜像体积
  • [ ] 利用构建缓存加速构建
  • [ ] 最小化镜像层数
  • [ ] 选择合适的基础镜像(Alpine、Distroless、Scratch)
  • [ ] 镜像安全扫描基础(docker scout

2.3 镜像管理

  • [ ] 推送镜像到 Docker Hub / 私有仓库
  • [ ] 镜像版本管理与标签策略
  • [ ] 了解镜像分层原理

练习任务:

  1. 为一个 Python/Node.js 应用编写 Dockerfile,构建镜像并运行
  2. 使用多阶段构建优化一个 Go 应用的镜像大小

第三阶段:数据管理与网络(第 3 周)

3.1 数据持久化

  • [ ] Volume(卷):docker volume createdocker volume lsdocker volume inspect
  • [ ] Bind Mount(绑定挂载):-v--mount 的用法
  • [ ] tmpfs Mount(临时挂载)
  • [ ] Volume vs Bind Mount 的使用场景选择
  • [ ] 数据卷备份与恢复

3.2 Docker 网络

  • [ ] 网络模式:bridge、host、none、overlay
  • [ ] 自定义 Bridge 网络:docker network create
  • [ ] 容器间通信:通过网络别名/容器名互联
  • [ ] 端口映射:-p 参数详解
  • [ ] 容器 DNS 解析机制

练习任务:

  1. 启动一个 MySQL 容器,使用 Volume 持久化数据,重启容器后验证数据不丢失
  2. 创建自定义网络,让两个容器(如 App + Redis)通过容器名互相访问

第四阶段:Docker Compose(第 4 周)

4.1 Compose 基础

  • [ ] Docker Compose 简介与安装
  • [ ] docker-compose.yml 文件结构与语法
  • [ ] 核心指令:servicesnetworksvolumes
  • [ ] 常用命令:docker compose updownpslogsexec

4.2 Compose 进阶

  • [ ] 环境变量与 .env 文件
  • [ ] 服务依赖与启动顺序(depends_on、healthcheck)
  • [ ] 多配置文件覆盖(docker-compose.override.yml
  • [ ] Compose profiles 管理多环境
  • [ ] 服务扩缩容:docker compose up --scale

4.3 实战项目

  • [ ] 使用 Compose 编排完整的 Web 应用栈
    • 前端(Nginx)
    • 后端(Python/Node/Go)
    • 数据库(MySQL/PostgreSQL)
    • 缓存(Redis)

练习任务:

编写 docker-compose.yml,一键启动一个包含 Web 应用 + MySQL + Redis 的完整项目。


第五阶段:生产实践(第 5-6 周)

5.1 日志与监控

  • [ ] Docker 日志驱动:json-file、syslog、fluentd
  • [ ] 容器资源监控:docker stats
  • [ ] 使用 cAdvisor + Prometheus + Grafana 监控容器
  • [ ] 容器健康检查(HEALTHCHECK)

5.2 安全最佳实践

  • [ ] 以非 root 用户运行容器(USER 指令)
  • [ ] 限制容器资源(--memory--cpus
  • [ ] 只读文件系统:--read-only
  • [ ] 使用 Docker secrets 管理敏感信息
  • [ ] 镜像签名与信任(Docker Content Trust)
  • [ ] 定期更新基础镜像,修复漏洞

5.3 CI/CD 集成

  • [ ] 在 CI 流水线中构建 Docker 镜像
  • [ ] 使用 GitHub Actions / GitLab CI 自动构建与推送镜像
  • [ ] 容器化测试环境搭建
  • [ ] 蓝绿部署 / 滚动更新基础概念

练习任务:

  1. 为一个项目配置 CI 流水线,自动构建镜像并推送到仓库
  2. 给运行中的容器配置资源限制和健康检查

第六阶段:容器编排入门(第 7-8 周,可选进阶)

6.1 Kubernetes 基础概念

  • [ ] 为什么需要容器编排?Docker Compose vs Kubernetes
  • [ ] K8s 核心组件:Pod、Service、Deployment、Namespace
  • [ ] 使用 Minikube / Kind 搭建本地 K8s 集群
  • [ ] kubectl 基础命令

6.2 将 Docker 应用迁移到 K8s

  • [ ] 编写 Deployment YAML
  • [ ] 配置 Service 暴露应用
  • [ ] ConfigMap 和 Secret 管理配置
  • [ ] 基础的滚动更新与回滚

📚 推荐学习资源

官方文档

书籍

  • 《Docker — 从入门到实践》(开源电子书)
  • 《深入浅出 Docker》—— Nigel Poulton

在线课程 / 实验平台

常用工具

  • Dive — 分析 Docker 镜像分层的工具
  • Lazydocker — 终端 Docker 管理 UI
  • Portainer — Web 端 Docker 管理界面

⏱ 学习时间建议

阶段内容建议时间重点
第一阶段基础入门1 周理解核心概念,熟练基础命令
第二阶段镜像构建1 周掌握 Dockerfile 编写与优化
第三阶段数据与网络1 周Volume 持久化、容器间网络通信
第四阶段Docker Compose1 周多容器编排,实战项目
第五阶段生产实践2 周安全、监控、CI/CD
第六阶段K8s 入门(可选)2 周容器编排基础

💡 建议:每天投入 1-2 小时,以动手实操为主,边学边练效果最佳。每完成一个阶段后,用一个小项目来巩固所学内容。