【Docker】升级docker或者docker到docker-ce完全保留镜像和容器,不影响原容器使用方法

升级docker或者docker到docker-ce完全保留镜像和容器,不影响原容器使用方法

以下是我的使用场景,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

再启动失败的容器问题已解决!

相关推荐
电商API_1800790524710 小时前
京东商品详情API技术文章
大数据·运维·人工智能·网络爬虫
三言老师11 小时前
秘诀-如何远程SSN访问家里的八台电脑(frp 实操方案)
linux·运维·ssh
BTU_YC12 小时前
Docker Compose 部署 DozerDB 完整教程
运维·docker·容器
流烟默13 小时前
Kubernetes 调度器完全指南:从原理到生产实战
云原生·容器·kubernetes
RisunJan15 小时前
Linux命令-scriptreplay(终端会话回放)
linux·运维·chrome
spencer_tseng15 小时前
[kylin & linux] install docker
linux·docker·kylin
x²+(y-√³x²)²=116 小时前
Linux打包文件到Windows,文件/文件类型丢失
linux·运维·windows
世人万千丶16 小时前
去重插入与超限淘汰:ArkTS 实现鸿蒙搜索历史的 LIMIT 艺术
运维·服务器·学习·华为·harmonyos·鸿蒙
未来之窗软件服务16 小时前
企业自动化运营-电子合同预览-东方仙盟
运维·自动化·仙盟创梦ide·东方仙盟
流烟默16 小时前
Kubernetes Service 完全指南:从原理到生产实战
云原生·容器·kubernetes