当前位置: 首页 > news >正文

【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

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

相关文章:

  • 论文笔记 | Nature 2023 FunSearch:利用大语言模型在数学科学领域探索新的发现
  • 使用yarn安装electron时手动选择版本
  • docker运行java程序的Dockerfile
  • Mybatis之增删改查
  • log4j2远程代码执行漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)
  • 什么是误差,什么是重构误差,误差与重构误差有什么区别?
  • thinkphp+vue+mysql酒店客房管理系统 b1g8z
  • 慢调用链诊断利器-ARMS 代码热点
  • JavaGUI(但期末速成版)之事件监听和处理
  • 【动画图解】一次理清九大排序算法!面试官问到再也不慌!
  • Centos7在安装Graylog时新安装MongoDB报错端口不监听服务不启动无法运行启动失败
  • el-table 实现行拖拽排序
  • 【C++多线程编程】(五)之 线程生命周期管理join() 与 detach()
  • 【Proteus仿真】【Arduino单片机】蓝牙遥控小车
  • 边缘计算有哪些常用场景?TSINGSEE边缘AI视频分析技术行业解决方案
  • hexo+github搭建个人博客
  • C++类的相互关联
  • es6--symbol
  • JavaScript实现分页效果
  • JavaScript学习总结——原型
  • LeetCode29.两数相除 JavaScript
  • PAT A1050
  • Python3爬取英雄联盟英雄皮肤大图
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 排序算法之--选择排序
  • 批量截取pdf文件
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 思否第一天
  • 通过npm或yarn自动生成vue组件
  • 线性表及其算法(java实现)
  • 以太坊客户端Geth命令参数详解
  • ​批处理文件中的errorlevel用法
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (1)bark-ml
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)RocketMQ初步认识
  • (转)关于pipe()的详细解析
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .Net Remoting(分离服务程序实现) - Part.3
  • .Net 垃圾回收机制原理(二)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • @ConditionalOnProperty注解使用说明
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @RequestMapping 的作用是什么?
  • @拔赤:Web前端开发十日谈
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk --不会编程的崽