同福

升级docker到docker-ce并且保留镜像和容器的方法【20210918】

介绍

介绍

CentOS自带的docker是早期的版本,支持的功能比较少,而且已经没有人维护了。最新的版本存在于docker团队维护的版本,社区版本是docker-ce,企业版本是docker-ee,像福哥这样的P民自然选择docker-ce版本了。

由于默认CentOS自带的是早期的版本的docker,所以福哥要把它升级到docker-ce版本。说是升级,其实就是卸载旧的安装新的。

今天福哥就带着大家学习一下如何在保留镜像和容器的前提下,卸载掉旧版本的docker,安装新的docker-ce。

现状

福哥弄了一个测试环境,里面安装了一个tongfunet容器,跑的是php:7.4-apache-buster的镜像。

home/topic/2021/0918/14/8f1ab21dd493187512e784044efe8b5c.png

在tongfunet容器里面部署了一个简单的网页。

home/topic/2021/0918/14/27f4049de7daf24d608c75e04e886f1a.png

安装

停止服务

首先先把服务停止了,不要直接卸载哦~~

systemctl stop docker

重命名数据目录

接着把默认的docker目录改一下名称。

mv /var/lib/docker /var/lib/docker-bak

删除服务

现在就可以安全地删除旧版本的docker服务了。

yum -y remove docker
yum -y remove docker-client
yum -y remove docker-common

安装docker-ce

安装docker-ce福哥前面的《在CentOS7上面升级docker到docker-ce的最新版本【20210601】》里有详情的讲解,这里就把命令复制过来了。

yum -y install yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce-18.06.3.ce-3.el7

恢复数据目录

安装完docker-ce后,系统会创建新的docker目录,删除新的,如何把备份的改回docker名称。

rm -rf /var/lib/docker
mv /var/lib/docker-bak /var/lib/docker

修复docker-runc

如果直接启动docker服务的容器,会得到下面的报错信息。

Error response from daemon: Unknown runtime specified docker-runc

home/topic/2021/0918/14/6e3aa8c940583252821328f04a06c469.png

需要针对容器里面的docker-runc改一下名称,用runc替换docker-runc。

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

启动服务

现在可以启动docker服务了。

systemctl start docker

测试

现在福哥再次使用curl连接tongfunet服务里面的apache测试。

home/topic/2021/0918/14/5e27c43949181f2dd0f4ffae056df17f.png

没有问题了!!

总结

今天福哥带着大家学习了如何将旧版本的docker服务升级为新版本的docker-ce,并且保留旧版本docker的镜像和容器以及各种设置的方法。

升级到docker-ce后,我们就可以通过docker-compose或者kubernetes等等先进的工具管理我们的服务了。