背景:

因为需要安装新的容器,所以需要升级docker,从1.13.1 版本升级到 20.10.9。升级之后原有的容器依然可以正常启动运行,数据没有发生丢失情况。

1、卸载原有版本.
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

在这里插入图片描述


2、安装 yum-utils 包 ,设置存储库

yum-utils 包(它提供 yum-config-manager 实用程序),这里用的是阿里云的镜像地址.

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

在这里插入图片描述


3、查询目前的yum源里的docker 版本

下面会列出当前可用的版本,如果查询的结果是空,那么就说明上一步的yum源没更新成功,需要检查镜像地址的设置和更新是否成功.

sudo yum list docker-ce --showduplicates | sort -r

在这里插入图片描述


4、安装新版的docker
  • 如果只是安装最新版的docker,那么运行
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

在这里插入图片描述

  • 如果要安装指定版本,使用完全限定的包名安装特定版本,包名(docker-ce)加上版本字符串(第2列) ,从第一个冒号(:)开始,一直到第一个连字符,用连字符(-)分隔。例如,docker-ce-18.09.1。
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin

这个命令安装了 Docker,但是没有启动 Docker。它还创建了一个 docker 组,但是默认情况下它不会将任何用户添加到组中。


5、启动docker
 sudo systemctl start docker

6、解决不兼容问题

到这步本来已经结束了,但升级docker 版本之后,原本的容器可能会因为不兼容导致无法启动。会报错:Error response from daemon: Unknown runtime specified docker-runc
在这里插入图片描述

这种情况下,先备份原本的容器信息

cp -r /var/lib/docker/containers/ /var/lib/docker/bkcontainers

然后更改/var/lib/docker/containers目录中的文件参数,把docker-runc替换为runc

grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'

注:grep -rl:递归搜索目录和子目录,只列出含有匹配的文本行的文件名,而不显示具体的匹配内容
xargs:衔接执行之前得到的值
总体意思是把/var/lib/docker/containers中含有‘docker-runc’的文件搜索出来,并把‘docker-runc’字符为runc

接着重新启动docker

systemctl restart docker

再去启动对应的容器,就不会再报错了


7、最后看一下目前的docker 版本,完美
docker version

在这里插入图片描述

参考文章:
docker 升级后或者重装后,启动容器提示:Error response from daemon: Unknown runtime specified docker-runc…
install Docker Engine on CentOS
CentOS Docker 安装

Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐