前言

我的系统信息:

Distributor ID:	AlibabaCloud(AliyunLinux)
Description:	Alibaba Cloud Linux (Aliyun Linux) release 2.1903 LTS (Hunting Beagle)
Release:	2.1903

aliyun linux 2实际对应的是centos7。默认的docker版本是Docker version 1.13.1, build 7d71120/1.13.1,这个版本已经很老旧了,无法兼容一些新的容器。所以升级是非常有必要的。

卸载旧版本

删除docker

  	yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

如果无法卸载,则需要先查看安装的docker包。 执行下面的指令:

yum list installed | grep docker

打印结果如下:

docker.x86_64                         2:1.13.1-209.git7d71120.1.al7  @updates
docker-client.x86_64                  2:1.13.1-209.git7d71120.1.al7  @updates
docker-common.x86_64                  2:1.13.1-209.git7d71120.1.al7  @updates
docker-compose.noarch                 1.18.0-4.el7                   @epel
docker-rhel-push-plugin.x86_64        2:1.13.1-209.git7d71120.1.al7  @updates
python36-docker.noarch                2.6.1-3.el7                    @epel
python36-docker-pycreds.noarch        0.2.1-2.el7                    @epel
python36-dockerpty.noarch             0.4.1-18.el7                   @epel

然后再次执行

  	yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-compose \
                  docker-rhel-push-plugin \
                  python36-docker \
                  python36-docker-pycreds \
                  python36-dockerpty

删除残余文件

删除/lib/systemd/system下面的docker.servicedocker.socket 删除/etc/systemd/system/下面的docker.servicedocker.service.d

安装新版本

卸载旧版本后,首先修改docker的镜像源:

sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

先别急着安装,需要修改下源文件才能正确安装,不然会报错404.

命令行输入:

vim /etc/yum.repos.d/docker-ce.repo

按键盘字母i进入修改模式。替换docker-ce-stable里面的$releasever为7

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

输入:wq报错并退出。

然后运行安装命令:

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose

安装完成后检查版本

docker --version

发现版本已经更新

启动docker

sudo systemctl start docker

设置docker开机启动

systemctl enable docker.service

FAQ

  1. daemon.json配置hosts后无法启动 将/usr/lib/systemd/system/docker.service文件中的ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 修改为ExecStart=/usr/bin/dockerd

  2. 如何修改了data-root,记得删除旧目录rm -rf /var/lib/docker