docker 旧版本升级

参考文章:https://blog.csdn.net/weixin_46152207/article/details/127533584

本文记录在CentOS上使用yum工具升级docker 的过程。参考文章写得很好,一次性成功。

我为什么升级

老版本是是1.13.X不支持多阶段构建,多阶段构建需要1.17.5以上版本

旧版本备份

首先对原来的配置文件进行备份,docker升级可能覆盖原配置文件。镜像和容器不会覆盖,升级后依然可用。

  1. 默认配置文件
    默认路径:/etc/docker/*
    我只备份daemon.json,升级后确实被覆盖,我从备份恢复了daemon.json

  2. 存储地址
    默认路径:/var/lib/docker
    升级不会覆盖该路径,升级后可以继续使用

我遇到的问题

  1. containerd.io 安装失败
    参考上面文章基本可用,但是 containerd.io 下载失败,在国内镜像中无法下载
containerd.io-1.6.33-3.1.el7.x86_64.rpm: [errno -1] 软件包与预期下载的不符

通过直接下载,手动安装解决

# 下载,如果有网络问题,可以从其他地方下载上传
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.33-3.1.el7.x86_64.rpm
# 安装
rpm -ivh --replacepkgs containerd.io-1.6.33-3.1.el7.x86_64.rpm
  1. 低版本升级到高版本之后不兼容 修改参数进行解决,修改后需要重启
 Error response from daemon: Unknown runtime specified docker-runc

解决方法:
更改/var/lib/docker/containers目录中的文件参数,把docker-runc替换为runc

grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'
注:grep -rl:递归搜索目录和子目录,只列出含有匹配的文本行的文件名,而不显示具体的匹配内容
xargs:衔接执行之前得到的值

总体意思是把/var/lib/docker/containers中含有‘docker-runc’的文件搜索出来,并把‘docker-runc’字符为runc

总结流程

  1. 备份配置文件
  2. 卸载
  3. 查找可用的新版本
  4. 安装,并解决无法自动安装的组件问题
  5. 恢复配置文件,然后启动
  6. 解决兼容性问题
  7. 重启docker
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 深入浅出Docker学习笔记 Docker引擎 Docker引擎:用来运行和管理容器的核心文件模块化(基于开放容器...
    yuq329阅读 4,270评论 0 4
  • Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 G...
    凉初透的风阅读 12,244评论 0 3
  • Docker是一种开源的应用容器引擎,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中。通过使用Docke...
    MOMOSODA阅读 819评论 0 0
  • 1. 更新软件源 apt-get update 2. 安装所需依赖 apt-get -y install apt-...
    bear_small阅读 3,633评论 0 2
  • Docker 发展历程 2013 年,随着PaaS发展壮大,这个领域的从业者们发现了 PaaS 中最为棘手也最亟待...
    宏势阅读 3,169评论 0 3