把 CentOS7 上的 docker 1.12 升级到 docker-ce 18.03

升级的过程比较简单明了, docker-ce 的官方文档有比较详细的介绍。 现在把我自己的升级过程介绍一下,并把遇到的问题以及解决办法,也分享一下。

1. 停止原来的所有运行的 docker, #docker stop xxx
2. 删除原来的 docker 软件包,

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

3. 添加新的 Repo:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

可选

yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test

4. 安装新的 docker-ce,并启动:

 yum install docker-ce
 systemctl start docker

以上就是一个完整的更新过程。

然而, 在升级以后,发现原来的容器不见了。 解决的办法是: 去 /var/lib/docker/containers/dockxxxxHASHxxxx
修改  hostconfig.json 把其中的 “Runtime”:”docker-runc”
修改成: “Runtime”:”runc”
重启 docker 服务。

其实我们也会在 syslog 里找到这样的报错信息:
dockerd: time=”2018-03-03T11:37:24.024568022+08:00″ level=error msg=”Failed to start container dockxxxxHASHxxxx: no such runtime ‘docker-runc'”

这样,我们就可以找回原来的 docker 了。
# docker container ls -a