版本升级策略
Docker 版本升级需要谨慎规划,下面介绍升级策略和处理方法。
Docker Engine 升级
版本类型
- CE (Community Edition):社区版,每季度发布
- EE (Enterprise Edition):企业版,每年发布,支持 3 年
升级流程
Bash
# 1. 备份当前配置
cp /etc/docker/daemon.json backup/daemon.json.$(date +%Y%m%d)
# 2. 查看可用版本
apt-cache policy docker-ce
# 3. 停止 Docker
systemctl stop docker
# 4. 升级
apt-get update
apt-get install docker-ce=<VERSION>
# 5. 启动并验证
systemctl start docker
docker version
docker run hello-world
滚动升级
Swarm 集群
Bash
# 主节点升级
# 1. 停止 Docker
systemctl stop docker
# 2. 升级
apt-get install docker-ce=<VERSION>
# 3. 启动
systemctl start docker
# 工作节点逐个升级
# 确保集群可用
零停机升级
YAML
# docker-compose.yml
services:
app:
deploy:
replicas: 3
update_config:
parallelism: 1 # 每次升级 1 个
delay: 10s # 延迟 10 秒
failure_action: rollback # 失败回滚
order: start-first # 先启动新容器
Breaking Changes 处理
查看变更日志
Bash
# Docker 发布说明
# https://docs.docker.com/engine/release-notes/
# 关注 Breaking Changes 部分
常见 Breaking Changes
| 版本 | 变更 | 影响 |
|---|---|---|
| 20.10 | 默认 cgroups v2 | 某些工具不兼容 |
| 23.0 | API 版本移除 | 旧客户端不兼容 |
| 24.0 | 存储驱动变更 | 需要迁移数据 |
回滚策略
Bash
# 升级失败回滚
# 1. 停止 Docker
systemctl stop docker
# 2. 降级版本
apt-get install docker-ce=<OLD_VERSION>
# 3. 恢复配置
cp backup/daemon.json.$(date +%Y%m%d) /etc/docker/daemon.json
# 4. 启动
systemctl start docker
Compose 升级
升级流程
Bash
# 查看当前版本
docker compose version
# 升级(Docker Desktop 自带)
# 或手动安装
curl -SL https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64 \
-o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
V1 → V2 迁移
Bash
# Compose V1 命令
docker-compose up -d
# Compose V2 命令
docker compose up -d
# 别名兼容
alias docker-compose='docker compose'
测试升级
预发环境测试
Bash
# 在预发环境先升级
# 验证所有功能正常
# 使用相同配置的生产数据
自动化测试
Bash
#!/bin/bash
# test-upgrade.sh
# 1. 部署当前版本
docker compose up -d
# 2. 运行测试
curl -f http://localhost:8080/health
if [ $? -ne 0 ]; then
echo "Health check failed"
exit 1
fi
# 3. 升级 Docker
apt-get install docker-ce=<VERSION>
# 4. 验证服务
docker compose up -d
curl -f http://localhost:8080/health
要点总结
- Docker Engine 升级前备份配置,停止服务后升级
- Swarm 集群滚动升级,工作节点逐个升级
- update_config 配置滚动升级策略,失败自动回滚
- 关注 Breaking Changes,预发环境测试后再生产升级
- Compose V1 → V2 命令从
docker-compose变为docker compose
📝 发现内容有误?点击此处直接编辑