Docker回退到指定旧版本需卸载当前版本、锁定依赖并安装目标版本:先查版本与可用历史版本,停止服务,再同步降级docker-ce、docker-ce-cli和containerd.io,最后启动验证;数据默认保留,但须确保三者版本兼容。
在 docker 中回退 docker engine 到指定旧版本,核心是卸载当前版本、锁定依赖、安装目标版本。不同系统操作路径略有差异,但逻辑一致:不能靠容器或镜像回滚,必须降级宿主机上的 docker 引擎本身。
Ubuntu/Debian 系统回退步骤
适用于使用 apt 包管理的系统(如 Ubuntu 20.04/22.04/24.04):
- 查当前版本:
docker --version和apt list --installed | grep docker - 查看可用历史版本:
apt-cache madison docker-ce,找到目标版本号(如5:25.0.5~ubuntu.22.04~jammy-1) - 停止服务:
sudo systemctl stop docker docker.socket - 执行降级安装(需同时指定 engine、CLI 和 containerd):
sudo apt-get install docker-ce=VERSION docker-ce-cli=VERSION containerd.io
例如:sudo apt-get install docker-ce=5:25.0.5~ubuntu.22.04~jammy-1 docker-ce-cli=5:25.0.5~ubuntu.22.04~jammy-1 containerd.io=1.7.20-1 - 启动并验证:
sudo systemctl start docker && docker --version
CentOS/RHEL 系统回退步骤
适用于 yum/dnf 管理的系统(如 CentOS 7/8、RHEL 8/9):
- 查当前安装包:
yum list installed | grep docker - 停止服务:
sudo systemctl stop docker - 用
yum downgrade一次性降级关键组件(注意版本号格式要匹配仓库中实际包名):sudo yum downgrade --setopt=obsoletes=0 -y docker-ce-20.10.7-3.el7 docker-ce-cli-20.10.7-3.el7 containerd.io-1.4.11-3.1.el7 - 重启服务:
sudo systemctl start docker && docker --version
通用注意事项
避免踩坑的关键点:
- 不要跳过 containerd.io 降级:Docker Engine 与 containerd 版本强绑定,只降 Docker 不降 containerd 极易导致启动失败
-
数据不丢失:降级操作不影响
/var/lib/docker中的镜像、容器、卷,原有数据默认保留 -
确认仓库可用:若目标旧版本不在当前源中,需先添加 Docker 官方旧版仓库(如
https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/) - 避免混用安装方式:用 apt/yum 安装的,就别用二进制或脚本覆盖;否则依赖冲突难排查
验证与回退保障
完成安装后建议立即验证:
- 运行
docker info检查 Engine、containerd、runc 版本是否全部对齐 - 拉一个基础镜像测试:
docker run --rm hello-world - 若失败,可快速切回原版本(前提是没清理旧包缓存),或用
apt-mark hold docker-ce锁定当前版本防意外升级


















