Linux下Docker版本升级保姆攻略
1. 背景
因为之前docker直接使用centos的yum -y install docker
安装的,安装源的版本比较老,最近项目计划使用docker的一些新特性,所以需要将docker版本做一下升级。本文详细记录了升级的过程,有需要的小伙伴可以参考一下。
2. 升级过程
2.1 查看当前版本
首先使用docker --version
查看现有的docker版本,可以看到,我们使用的是1.13.1,也是比较老的一个版本的。
输出如下:
Docker version 1.13.1, build 7d71120/1.13.1
2.2 卸载当前版本
首先需要停止我们当前运行的docker服务
sudo systemctl stop docker
Docker 使用了 systemd 的 socket 激活 机制
# 同时停止 docker.service 和 docker.socket
sudo systemctl stop docker.socket docker.service# 或者先停止socket再停止服务
sudo systemctl stop docker.socket
sudo systemctl stop docker.service
然后卸载当前版本docker
sudo yum remove -y docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
如果是比较新的ce版本,卸载命令如下:
sudo yum remove -y docker-ce \docker-ce-cli \docker-ce-rootless-extras \containerd.io \docker-buildx-plugin \docker-compose-plugin
删除旧的 Docker 相关数据(可选):
⚠️ 注意:
/var/lib/docker
目录包含所有 Docker 容器和镜像,如果不想丢失数据,请 备份后再执行删除,或者不删除。- 如果docker版本差异过大,会出现原来容器在新版本不可用的情况,如果存在数据存在容器内,请先备份数据。
sudo rm -rf /var/lib/docker
2.3 安装必要的依赖包
安装 yum-utils
工具,它们可以帮助你管理 YUM 仓库
sudo yum install -y yum-utils
2.4 设置 Docker 仓库
Docker 的官方仓库在国外,速度可能较慢。建议国内用户使用国内镜像源,例如阿里云:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
若你希望使用官方源,可以使用以下命令
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2.5 安装最新版本的 Docker
接下来,安装 Docker CE 最新版本:
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
若要安装 特定版本,可以先列出可用版本:
yum list docker-ce --showduplicates | sort -r
然后安装指定版本:
sudo yum install -y docker-ce-<VERSION> docker-ce-cli-<VERSION> containerd.io
2.6 启动 Docker 并设置开机自启
安装完成后,启动 Docker 服务并将其设置为开机自动启动:
sudo systemctl start docker
sudo systemctl enable docker
3. 安装验证
3.1 验证 Docker 版本
docker --version
输出如下:
3.2 验证安装
通过运行 hello-world
镜像来验证 Docker 是否已正确安装并正常运行:
docker run hello-world
如果看到 “Hello from Docker!” 的提示信息,说明安装成功。
4. 镜像源配置
因为国内无法直接使用官方的镜像源,这里可以使用阿里云的制品中心做下替换
链接前往,需登录:https://cr.console.aliyun.com/cn-hangzhou/instances/artifact