1. 前言
为了解决稳定性和兼容性等方面的问题,我们可能需要升级或降级Docker。
升级和降级Docker有两个方案:利用包管理工具和利用二进制包。本文中,我们会学习这两种方案。
2. 包管理工具升降级Docker
2.1. ubuntu18中升降级docker
1、停止Docker
1 | docker version |
2、查询Docker可用版本
1 | apt update |
3、升级/降级Docker(假设目标版本为24.0.2)
1 | apt install docker-ce=5:24.0.2-1~ubuntu.18.04~bionic |
4、启动Docker
1 | systemctl start docker |
2.2. centos7中升降级docker
1、停止Docker
1 | docker version |
2、查询Docker可用版本
1 | yum list docker-ce --showduplicates | sort -r |
3、升级/降级Docker(假设目标版本为19.03.15)
1 | version=19.03.15 |
4、启动Docker
1 | systemctl start containerd |
3. 二进制包升降级Docker
二进制包替换不是官方推荐的更新方法,因为它需要手动干预更多的步骤,但是在一些定制化环境或缺少包管理工具的系统上可能是必须的。
在 Linux 系统中,通过二进制包替换方式升级 Docker 主要涉及到以下步骤。
1、下载指定版本的 Docker 二进制文件
从 Docker Download 官方网站 下载对应的二进制包,例如我们需要 x86_64 系统架构的23.0.6版本。
1 | wget https://download.docker.com/linux/static/stable/x86_64/docker-23.0.6.tgz |
其中包含多个二进制文件:
- containerd
- containerd-shim-runc-v2
- ctr
- docker
- dockerd
- docker-init
- docker-proxy
- runc
2、确认二进制文件原本的路径
1 | which containerd |
3、停止运行的Docker服务
1 | systemctl stop docker.socket |
4、备份当前的 Docker 程序 (可选)
1 | cp /usr/bin/containerd{,.bak} |
5、将二进制文件移动到 /usr/bin
目录下
1 | cp docker/* /usr/bin/ |
拷贝过程中,如果出现报错:cp: 无法创建普通文件’/usr/bin/containerd-shim-runc-v2’: 文本文件忙
解决办法为:
1 | lsof /usr/bin/containerd-shim-runc-v2 |
6、重新启动 Docker 服务
1 | systemctl start containerd |
7、检查 Docker 是否已经成功升级
1 | docker version |