主题
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 version、docker info - [ ] 了解 Docker Desktop(可选)
1.3 基础命令实操
- [ ] 镜像操作:
docker pull、docker images、docker rmi、docker tag - [ ] 容器操作:
docker run、docker ps、docker stop、docker rm - [ ] 容器交互:
docker exec -it、docker attach、docker logs - [ ] 容器导入导出:
docker export、docker import、docker save、docker load
练习任务:
拉取 Nginx 镜像,启动容器并通过浏览器访问默认页面;进入容器修改默认页面内容。
第二阶段:镜像构建(第 2 周)
2.1 Dockerfile 基础
- [ ] Dockerfile 常用指令:
FROM、RUN、COPY、ADD、WORKDIR、EXPOSE、CMD、ENTRYPOINT - [ ]
CMDvsENTRYPOINT的区别与使用场景 - [ ]
COPYvsADD的区别 - [ ]
.dockerignore文件的作用与编写
2.2 镜像构建最佳实践
- [ ] 多阶段构建(Multi-stage Build):减小镜像体积
- [ ] 利用构建缓存加速构建
- [ ] 最小化镜像层数
- [ ] 选择合适的基础镜像(Alpine、Distroless、Scratch)
- [ ] 镜像安全扫描基础(
docker scout)
2.3 镜像管理
- [ ] 推送镜像到 Docker Hub / 私有仓库
- [ ] 镜像版本管理与标签策略
- [ ] 了解镜像分层原理
练习任务:
- 为一个 Python/Node.js 应用编写 Dockerfile,构建镜像并运行
- 使用多阶段构建优化一个 Go 应用的镜像大小
第三阶段:数据管理与网络(第 3 周)
3.1 数据持久化
- [ ] Volume(卷):
docker volume create、docker volume ls、docker 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 解析机制
练习任务:
- 启动一个 MySQL 容器,使用 Volume 持久化数据,重启容器后验证数据不丢失
- 创建自定义网络,让两个容器(如 App + Redis)通过容器名互相访问
第四阶段:Docker Compose(第 4 周)
4.1 Compose 基础
- [ ] Docker Compose 简介与安装
- [ ]
docker-compose.yml文件结构与语法 - [ ] 核心指令:
services、networks、volumes - [ ] 常用命令:
docker compose up、down、ps、logs、exec
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 自动构建与推送镜像
- [ ] 容器化测试环境搭建
- [ ] 蓝绿部署 / 滚动更新基础概念
练习任务:
- 为一个项目配置 CI 流水线,自动构建镜像并推送到仓库
- 给运行中的容器配置资源限制和健康检查
第六阶段:容器编排入门(第 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
在线课程 / 实验平台
- Play with Docker — 免费在线 Docker 实验环境
- Docker 官方 Getting Started
- KillerCoda — 交互式 Docker 学习场景
常用工具
- Dive — 分析 Docker 镜像分层的工具
- Lazydocker — 终端 Docker 管理 UI
- Portainer — Web 端 Docker 管理界面
⏱ 学习时间建议
| 阶段 | 内容 | 建议时间 | 重点 |
|---|---|---|---|
| 第一阶段 | 基础入门 | 1 周 | 理解核心概念,熟练基础命令 |
| 第二阶段 | 镜像构建 | 1 周 | 掌握 Dockerfile 编写与优化 |
| 第三阶段 | 数据与网络 | 1 周 | Volume 持久化、容器间网络通信 |
| 第四阶段 | Docker Compose | 1 周 | 多容器编排,实战项目 |
| 第五阶段 | 生产实践 | 2 周 | 安全、监控、CI/CD |
| 第六阶段 | K8s 入门(可选) | 2 周 | 容器编排基础 |
💡 建议:每天投入 1-2 小时,以动手实操为主,边学边练效果最佳。每完成一个阶段后,用一个小项目来巩固所学内容。