07.进阶与最佳实践
1. 生产环境注意事项
资源限制
1 2 3 4 5 6 7 8 9 10
| services: app: deploy: resources: limits: cpus: '1.0' memory: 1G reservations: cpus: '0.5' memory: 512M
|
日志管理
1 2 3 4 5 6 7
| services: app: logging: driver: json-file options: max-size: "100m" max-file: "5"
|
安全加固
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| services: app: user: "1000:1000"
read_only: true
tmpfs: - /tmp:size=100m
security_opt: - no-new-privileges:true
|
2. 常见问题排查
容器无法启动
1 2 3 4 5 6 7 8 9 10
| docker logs container_name
docker inspect container_name
|
网络不通
1 2 3 4 5 6 7 8 9 10 11
| docker network ls docker network inspect network_name
docker exec container1 ping container2
|
磁盘空间不足
1 2 3 4 5 6 7 8 9 10 11
| docker system df
docker system prune
docker system prune -a
docker volume prune
|
3. Docker 生态与未来
Kubernetes 简介
当容器数量达到一定规模(几十到上百),Docker Compose 就不够用了。Kubernetes(K8s)是容器编排的事实标准:
- 自动扩缩容
- 服务发现与负载均衡
- 滚动更新与回滚
- 自我修复
Docker Swarm
Docker 原生的编排工具,比 K8s 简单:
1 2 3 4 5
| docker swarm init
docker stack deploy -c docker-compose.yml myapp
|
云原生趋势
- 容器运行时:containerd、CRI-O 等逐渐替代 Docker Engine
- 无服务器容器:AWS Fargate、Google Cloud Run
- 服务网格:Istio、Linkerd