Docker 更新版本

Docker 更新版本

原来版本 1.10

更新后的版本 19.03.1

更新 Docker 版本需要注意的问题:

  • 注意系统是否支持新版本的储存驱动。

    19.03.01 版本默认使用的储存驱动是 overlay2

    overlay2 存储驱动使用需要满足以下条件:

一、暂停原有的容器并导出

Docker 版本更新:

暂停所有docker, 现有的镜像和容器都导出成 tar包

导出容器

docker export  container id  -o  d.tar

导出镜像

docker  image  save  container  -o  a.tar

二、移除原来的 Docker 并安装新的版本

移除老版本的 Docker

 yum remove docker                   docker-client                   docker-client-latest                   docker-common                   docker-latest                   docker-latest-logrotate                   docker-logrotate                   docker-engine

安装新版本 Docker

# yum-utils 提供了命令 yum-config-manager,device-mapper-persistent-data和lvm2由需要 devicemapper存储驱动程序。
yum install -y yum-utils   device-mapper-persistent-data   lvm2
# 设置 yum 源为 稳定的版本
# 阿里的源,国内使用较快
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 官方的源(国内使用比较慢)
yum-config-manager --add-repo    https://download.docker.com/linux/centos/docker-ce.repo
# 生成缓存
yum makecache
# 如果要安装指定的版本
yum list docker-ce --showduplicates | sort -r
# 填入版本号到下面的命令(docker-ce-19.03.0-3.el7)
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

# 安装最新稳定版本 Docker CE
yum install docker-ce docker-ce-cli containerd.io    

三、 使用原来的数据目录、或者 创建新的数据目录。

使用原来的数据目录

使用之前的数据目录,也就是之前版本的数据目录,这样 之前的镜像和容器就可以不用再导入了,直接使用就行了。

指定之前的 储存目录,我们之前 Docker 的储存目录是 /opt/docker.

cat << EOF >>/etc/docker/daemon.json
{
    "data-root": "/opt/docker"
}
EOF

启动docker

systemctl  start  docker
docker  images   # 我们可以看到之前的镜像都存在
docker  info   # 我们可以看到

更新后改变的东西

  • 日志驱动之前是 journal 现在是 logfile

    数据目录:

[[email protected] docker]# ls -l
total 48
drwx------ 2 root root 4096 Aug  6 15:58 builder
drwx------ 4 root root 4096 Aug  6 15:58 buildkit
drwxrwxrwx 5 root root 4096 Aug  6 16:31 containers
drwxrwxrwx 5 root root 4096 Oct 13  2016 devicemapper
drwxrwxrwx 3 root root 4096 Oct 13  2016 image
drwxrwxrwx 3 root root 4096 Oct 13  2016 network
drwx------ 4 root root 4096 Aug  6 15:58 plugins
drwx------ 2 root root 4096 Aug  6 16:41 runtimes
drwx------ 2 root root 4096 Aug  6 15:58 swarm
drwx------ 2 root root 4096 Aug  6 16:41 tmp
drwxrwxrwx 2 root root 4096 Oct 13  2016 trust
drwxrwxrwx 2 root root 4096 Aug  6 15:58 volumes

原来的 1.10版本 是 默认驱动 devicemapper ,使用上一个版本的 Docker 目录的话,会使用上一个版本的默认的驱动(为了兼容),如果使用的是新的目录,则会使用官方当前版本默认的储存驱动和日志引擎。

创建新的目录,导入镜像

使用新的数据目录 /opt/docker-ce

cat << EOF >>/etc/docker/daemon.json
{
    "data-root": "/opt/docker-ce"
}
EOF
systemctl restart  docker 

导入镜像

docker image import  jenkins.tar    fy:jenkins

导入的镜像会使用Docker 的默认的驱动,也就是 overlay2,会使用默认的日志驱动。不管原来镜像使用的什么驱动,导入后会使用当前的默认储存驱动。

四、更新过程中遇到的问题

我们按照上面步骤更新,使用的是创建新的目录的方式。当我们启动我们的 Jenkins 容器后,执行构建后,发现有下面的报错。

升级之后的问题。删除文件夹报错。命令是没有问题的。

进入容器我执行下面的命令,也是报错。

[[email protected] target]# rm -rf  ./*
rm: cannot remove `./classes/com/ugou88/wx/interceptor': Invalid argument
rm: cannot remove `./classes/com/ugou88/wx/i/controller': Invalid argument

问题,很有可能是驱动导致的,就是储存驱动。

我们升级后 Docker 默认使用的驱动是 overlay2,那么如果要使用该驱动需要满足以下条件。

  • overlay2`Docker CE和Docker EE 17.06.02-ee5及更高版本支持该驱动程序,是推荐的存储驱动程序。
  • 需要 Linux 内核版本在 4.0更高的版本或者使用 RHEL/CentOs 版本号大于 3.10.0-514
  • overlayoverlay2驱动程序支持xfs的文件系统,但需要d_type=true启用。

    使用xfs_info验证ftype选项设置为1。要xfs正确格式化 文件系统,请使用该标志-n ftype=1

我们使用的 ext4 文件系统,Docker 的版本也高于 17.06.02,但是我们的 Centos 版本号是 低于 3.10.0-514 的, 所以我推测是由于 版本号过低,导致储存驱动使用不了,我们对系统进行快照后,进行升级内核。

升级内核之后,我们重启主机,发现是可以正常使用的。

原文地址:https://www.cnblogs.com/operationhome/p/11322150.html

时间: 2024-10-15 10:47:26

Docker 更新版本的相关文章

软件工程腾讯QQ (1)优点:聊天功能比较强大。同时提供安全登陆通道,保障了用户信息的安全性。应用的人群范围比较广 缺点:要展示的信息量太多,用户个人信息容易泄露。有一些弄虚作假通过其欺骗用户上当。 (2)有使用需要自己下载 (3)版本更新修复bug,定期更新版本

1.软件工程未来的发展方向是什么? 2.编程基础不好,我能学习好软件工程吗? 3.软件工程跟物联网之间的区别与联系是什么? 4.软件工程在现实生活中有哪些应用? 5.在软件工程的分类中,如何选择一个适合自己的? 6.软件工程的学习中最难克服的阶段是什么? 7.怎样学好软件工程? 腾讯QQ (1)优点:聊天功能比较强大.同时提供安全登陆通道,保障了用户信息的安全性.应用的人群范围比较广 缺点:要展示的信息量太多,用户个人信息容易泄露.有一些弄虚作假通过其欺骗用户上当. (2)有使用需要自己下载 (

android SDK manager 无法获取更新版本列表【转载】

http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息:  http://developer.android.com/sdk/installing/installing-adt.html 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ssl.google.com/android/eclipse/https://dl-ssl.

[转] Android SDK manager 无法获取更新版本列表

打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ssl.google.com/android/eclipse/ https://dl-ssl.google.com/android/eclipse/ 到Android SDK官网下载ADT离线升级包 http://developer.android.com/sdk/installing/installing-ad

二维码加密解密工具——优密 更新版本发布!

优密--二维码加解密工具该工具是一款强大的二维码加密与解密扫码的手机软件,适用于Android 2.2及以上平台.使用本工具可以制作出具有加密信息的二维码,该二维码无法被普通的二维码扫码工具解码其中的内容,可以非常方便的将机密的信息隐藏在二维码中,帮助保护机密信息不被非法的扫码解读! 优密二维码加密解密工具主要特点: 1.制作包含加密信息的二维码:软件可在手机中直接生成需要的内容的加密二维码,无需借助电脑等设备,该二维码外观与普通二维码无异,并且也可被常见的普通二维码扫码工具扫描识别,但是却无法

iOS中app在iTunes中更新版本流程

昨天终于把新版本的app上传了,我能说我在上传的前一分钟都在改bug吗 对这个版本的app我实在是没有什么信心去期盼它可以通过苹果残酷的审核 第一次去做更新版本这件事我也看了很多资料,大多数是网络博客 每次看到那些步骤详细,图文混排的博客,心中一直都存感激之情 程序员的世界总是略显孤独,有时会羡慕运营部的喧闹,但是,看到这么多博客,我想这也是我们的交流方式 我去,想文艺一下发现自己词穷 在已经在iTunes发布app的情况下,进行新版本的发布 首先,需要两个文件:production ver,p

VMware Workstation pro无法在Windows上运行,检查可在Windows上运行的此应用的更新版本

VMware Workstation pro无法在Windows上运行,检查可在Windows上运行的此应用的更新版本如何解决? 如果您无法正常查看本文的图片,请访问我的语雀空间查看备份文档:语雀|VMware Workstation pro无法在Windows上运行,检查可在Windows上运行的此应用的更新版本 Solution1: 卸载Windows更新 卸载图中的两个更新后重启电脑,VMware就能正常使用了~ 必要的话,你还可以参考这篇文章停止Windows自动更新:如何停止Windo

自己主动更新 -- 版本比較(2)

版本比較 在实现自己主动更新的时候,须要进行版本的比較. 比如: 1.0.6 和1.0.7比較大小 解决方式: 将版本的字符串转换成整数来比較. 步骤: 1. 去除字符串中的小数点.(使用正則表達式) 2. 比較两个字符串的长度.长度短的后尾补0.直到两个字符串长度同样. (为了实现 1.0.5.1与1.0.6的比較). 3. 将两个字符串转换成整数比較. 代码例如以下: // 正則表達式去除小数点 //String str1 = "1.0.6".replaceAll("[.

nvidia驱动自动更新版本后问题解决 -- failed to initialize nvml: driver/library version mismatch

因为必须关闭桌面窗口, 建议另外一台电脑ssh连接操作 1. 卸载旧版本并关闭图形界面 sudo apt-get remove --purge nvidia-\* sudo service lightdm stop sudo init 3 2. 安装对应版本号驱动 sudo chmod +x cuda_8.0.61_375.26_linux.run sudo sh cuda_8.0.61_375.26_linux.run --tmpdir=/tmp --override 3. 安装cudnn5.

AFA更新版本

1.更新afa版本操作流程 2.选择可更新的版本然后点下一步,更新完之后完成 !完成版本更新.