介绍
介绍
CentOS自带的docker是早期的版本,支持的功能比较少,而且已经没有人维护了。最新的版本存在于docker团队维护的版本,社区版本是docker-ce,企业版本是docker-ee,像福哥这样的P民自然选择docker-ce版本了。
由于默认CentOS自带的是早期的版本的docker,所以福哥要把它升级到docker-ce版本。说是升级,其实就是卸载旧的安装新的。
今天福哥就带着大家学习一下如何在保留镜像和容器的前提下,卸载掉旧版本的docker,安装新的docker-ce。
现状
福哥弄了一个测试环境,里面安装了一个tongfunet容器,跑的是php:7.4-apache-buster的镜像。
在tongfunet容器里面部署了一个简单的网页。
安装
停止服务
首先先把服务停止了,不要直接卸载哦~~
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
需要针对容器里面的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测试。
没有问题了!!
总结
今天福哥带着大家学习了如何将旧版本的docker服务升级为新版本的docker-ce,并且保留旧版本docker的镜像和容器以及各种设置的方法。
升级到docker-ce后,我们就可以通过docker-compose或者kubernetes等等先进的工具管理我们的服务了。