【Docker】升级docker或者docker到docker-ce完全保留镜像和容器,不影响原容器使用方法
2023-12-20 18:51:25
以下是我的使用场景,docker升级到docker-ce,但对于docker-ce升级也通用!亲测!
一、介绍
CentOS自带的docker是早期的版本,支持的功能比较少,而且已经没有人维护了。最新的版本存在于docker团队维护的版本,社区版本是docker-ce,企业版本是docker-ee。
由于默认CentOS自带的是早期的版本的docker,所以yum默认也是下旧的docker。
我当时没太在意,就正常使用,装了几个容器,并有数据在里面。
后来在拉取一个镜像时,报错:missing signature key,于是参考博文,需要升级docker。
那么如何升级docker并且不能丢失我的容器和数据呢?
二、升级方法
1. 首先先把服务停止了,不要直接卸载
systemctl stop docker
2. 重命名数据目录
把默认的docker目录改一下名称。
mv /var/lib/docker /var/lib/docker-bak
3. 删除服务
现在就可以安全地删除旧版本的docker服务了。
yum -y remove docker
yum -y remove docker-client
yum -y remove docker-common
或者使用
yum -y remove docker*
4. 安装docker-ce
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!!
5. 恢复数据目录
安装完docker-ce后,系统会创建新的docker目录,删除新的,如何把备份的改回docker名称。
切记:不要启动docker!!
rm -rf /var/lib/docker
mv /var/lib/docker-bak /var/lib/docker
6. 启动docker服务
systemctl start docker
三、遇到问题说明
如果直接启动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 restart docker
再启动失败的容器问题已解决!
文章来源:https://blog.csdn.net/weixin_43431218/article/details/135107454
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!