Appearance
容器化部署(Docker)课程计划
课程概述
本课程分为 8 节课,每节课 20-40 分钟,总时长约 120-150 分钟。通过理论讲解和实践操作,深入理解 Docker 容器化的实现方法。
第 1 课:课程介绍与环境准备(5 分钟)
学习目标
- 了解课程内容和目标
- 安装 Docker
- 验证 Docker 安装
课程内容
课程介绍
- Docker 的特点
- 容器化的优势
- 课程结构安排
环境准备
- 安装 Docker
- 验证安装
- 配置 Docker
实践操作
bash
# 验证 Docker 安装
docker --version
docker info
# 运行测试容器
docker run hello-world预期输出
Docker version 24.0.0
Hello from Docker!第 2 课:Docker 基础(15 分钟)
学习目标
- 理解 Docker 核心概念
- 掌握 Docker 命令
- 学习容器管理
课程内容
Docker 核心概念
- 镜像
- 容器
- 仓库
Docker 命令
- 镜像命令
- 容器命令
- 网络命令
容器管理
- 创建容器
- 启动容器
- 停止容器
实践操作
bash
# 拉取镜像
docker pull nginx:alpine
# 运行容器
docker run -d -p 80:80 --name my-nginx nginx:alpine
# 查看容器
docker ps
# 停止容器
docker stop my-nginx
# 删除容器
docker rm my-nginx测试验证
bash
docker ps预期输出
CONTAINER ID IMAGE COMMAND CREATED STATUS第 3 课:Dockerfile(15 分钟)
学习目标
- 理解 Dockerfile 语法
- 掌握 Dockerfile 指令
- 学习构建镜像
课程内容
Dockerfile 语法
- FROM
- RUN
- COPY
- CMD
Dockerfile 指令
- WORKDIR
- EXPOSE
- ENV
- ADD
构建镜像
- docker build
- 构建上下文
- 镜像标签
实践操作
dockerfile
# Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]bash
# 构建镜像
docker build -t myapp:latest .
# 运行容器
docker run -d -p 3000:3000 myapp:latest测试验证
bash
docker images预期输出
REPOSITORY TAG IMAGE ID CREATED
myapp latest abc123def456 1 minute ago第 4 课:多阶段构建(15 分钟)
学习目标
- 理解多阶段构建原理
- 掌握多阶段构建方法
- 学习镜像优化
课程内容
多阶段构建
- 构建阶段
- 运行阶段
- 复制产物
镜像优化
- 减小镜像大小
- 减少层数
- 利用缓存
最佳实践
- 选择合适的基础镜像
- 合并 RUN 指令
- 使用 .dockerignore
实践操作
dockerfile
# 多阶段构建
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
EXPOSE 3000
CMD ["node", "dist/index.js"]bash
# 构建多阶段镜像
docker build -t myapp:multi-stage .
# 查看镜像大小
docker images myapp测试验证
bash
docker images myapp预期输出
REPOSITORY TAG IMAGE ID SIZE
myapp multi-stage abc123def456 80MB第 5 课:Docker Compose(20 分钟)
学习目标
- 理解 Docker Compose 概念
- 掌握 Docker Compose 配置
- 学习多容器管理
课程内容
Docker Compose
- 服务定义
- 网络配置
- 卷管理
Compose 配置
- version
- services
- volumes
- networks
多容器管理
- 启动服务
- 停止服务
- 查看日志
实践操作
yaml
# docker-compose.yml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- postgres
- redis
networks:
- app-network
postgres:
image: postgres:15-alpine
environment:
- POSTGRES_DB=myapp
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- app-network
redis:
image: redis:7-alpine
networks:
- app-network
volumes:
postgres-data:
networks:
app-network:
driver: bridgebash
# 启动服务
docker-compose up -d
# 查看服务
docker-compose ps
# 查看日志
docker-compose logs app测试验证
bash
docker-compose ps预期输出
NAME COMMAND STATUS
docker-app-1 "node index.js" Up
docker-postgres-1 "docker-entrypoint" Up
docker-redis-1 "docker-entrypoint" Up第 6 课:网络和存储(15 分钟)
学习目标
- 理解 Docker 网络
- 掌握 Docker 存储
- 学习网络和存储配置
课程内容
Docker 网络
- Bridge 网络
- Host 网络
- Overlay 网络
Docker 存储
- 卷
- 绑定挂载
- tmpfs
网络和存储配置
- 创建网络
- 创建卷
- 配置存储
实践操作
bash
# 创建网络
docker network create my-network
# 创建卷
docker volume create my-volume
# 运行容器并使用网络和卷
docker run -d \
--name myapp \
--network my-network \
-v my-volume:/data \
myapp:latest
# 查看网络
docker network ls
# 查看卷
docker volume ls测试验证
bash
docker network ls
docker volume ls预期输出
NETWORK ID NAME DRIVER
abc123def456 my-network bridge
DRIVER VOLUME NAME
local my-volume第 7 课:健康检查和监控(20 分钟)
学习目标
- 理解健康检查机制
- 实现容器健康检查
- 学习容器监控
课程内容
健康检查
- HEALTHCHECK 指令
- 健康检查配置
- 健康状态
容器监控
- docker stats
- docker events
- 日志管理
告警通知
- 健康检查失败
- 容器异常
- 资源超限
实践操作
dockerfile
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD node -e "require('http').get('http://localhost:3000/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"yaml
# Docker Compose 健康检查
services:
app:
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"]
interval: 30s
timeout: 3s
retries: 3
start_period: 5sbash
# 查看容器健康状态
docker ps --format "table {{.Names}}\t{{.Status}}"
# 查看容器资源使用
docker stats测试验证
bash
docker ps --format "table {{.Names}}\t{{.Status}}"预期输出
NAMES STATUS
myapp Up 2 minutes (healthy)第 8 课:总结与扩展(15 分钟)
学习目标
- 回顾课程内容
- 总结核心概念
- 探索扩展方向
课程内容
课程回顾
- Docker 基础
- Dockerfile
- 多阶段构建
- Docker Compose
- 网络和存储
- 健康检查和监控
核心概念总结
- 容器化
- 镜像构建
- 多容器管理
- 网络和存储
扩展方向
- 多阶段构建
- 健康检查
- 日志管理
- 资源限制
- 网络配置
实践操作
bash
# 运行所有测试
npm test
# 思考如何扩展功能
# 实现多阶段构建、健康检查等功能预期输出
✅ 所有测试通过学习成果
完成本课程后,你将能够:
- ✅ 理解 Docker 的核心概念
- ✅ 编写 Dockerfile
- ✅ 使用 Docker Compose
- ✅ 配置网络和存储
- ✅ 实现健康检查和监控
参考资源
下一步
完成本课程后,你可以继续学习:
- CI/CD 持续集成
所有教学材料已保存。准备录制。

扫描二维码关注"架构师AI杜"公众号,获取更多技术内容和最新动态
