Docker 更新版本

https://www.cnblogs.com/operationhome/archive/2019/08/11/11322150.html

园友说 docker 使用了 data-root的 来进行处理了 这边简单百度了下  以后 需要及时更新自己的知识库呢. 

感谢原作者的提供的知识.

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

    数据目录:

[root@iz23nb5ujp69 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 容器后,执行构建后,发现有下面的报错。

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

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

[root@491c264aea0d 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 的, 所以我推测是由于 版本号过低,导致储存驱动使用不了,我们对系统进行快照后,进行升级内核。

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

[转帖]Docker 更新版本 以及 data-root的更多相关文章

  1. Docker 更新版本

    Docker 更新版本 原来版本 1.10 更新后的版本 19.03.1 更新 Docker 版本需要注意的问题: 注意系统是否支持新版本的储存驱动. 19.03.01 版本默认使用的储存驱动是 ov ...

  2. [转帖]Docker的daemon.json的作用

    Docker(十六)-Docker的daemon.json的作用 https://www.cnblogs.com/zhuochong/p/10070434.html jfrog 培训的时候 说过这个地 ...

  3. [转帖]Docker从入门到动手实践

    Docker从入门到动手实践 https://www.cnblogs.com/nsky/p/10853194.html dockerfile的图很好呢. 但是自己没有做实验 , 其实知识都挺好. do ...

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

      打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...

  5. ROS(indigo) 安装和使用更新版本的Gazebo----3,4,5,6,7 附:中国机器人大赛中型组仿真比赛说明

    ROS(indigo) 安装和使用更新版本的Gazebo,本文以7为例. Gazebo7支持更多新的功能,如果使用下面命令安装ROS(indigo): ~$ sudo apt-get install ...

  6. Android 6.0 7.0 8.0 一个简单的app内更新版本-okgo app版本更新

    登陆时splash初始页调用接口检查app版本.如有更新,使用okGo的文件下载,保存到指定位置,调用Android安装apk. <!-- Android 8.0 (Android O)为了针对 ...

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

    http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息:  http://developer.android.c ...

  8. android SDK manager 无法获取更新版本的解决办法

    http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息:  http://developer.android.c ...

  9. docker最新版本以及docker-compose安装脚本

    docker最新版本以及docker-compose编排工具安装脚本 git clone https://github.com/luckman666/shell_scripts.git cd shel ...

随机推荐

  1. java web项目为什么我们要放弃jsp?(转)

    前戏: 以前的项目大多数都是java程序猿又当爹又当妈,又搞前端(ajax/jquery/js/html/css等等),又搞后端(java/mysql/Oracle等等). 随着时代的发展,渐渐的许多 ...

  2. linux下core dump--转载

    原文链接:https://www.cnblogs.com/Anker/p/6079580.html   1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下 ...

  3. Shell 07 项目案例

    案例1:编写一键部署软件脚本 案例2:启动脚本 案例3:编写监控脚本 案例4:编写安全检测脚本 案例5:编写进度显示脚本   一.编写一键部署软件脚本 #!/bin/bash N=$(yum repo ...

  4. seq2seq聊天模型(二)——Scheduled Sampling

    使用典型seq2seq模型,得到的结果欠佳,怎么解决 结果欠佳原因在这里 在训练阶段的decoder,是将目标样本["吃","兰州","拉面" ...

  5. Python使用grequests并发发送请求

    目录 前言 grequests简单使用 grequests和requests性能对比 异常处理 前言 requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快.但是 ...

  6. golang中文件以及文件夹路径相关操作

    获取目录中所有文件使用包: io/ioutil 使用方法: ioutil.ReadDir 读取目录 dirmane 中的所有目录和文件(不包括子目录) 返回读取到的文件的信息列表和读取过程中遇到的任何 ...

  7. Maven-Profile 环境隔离

    作用 快速切换不同的配置环境,比如开发时是连接的本地数据库,发布线上时是另外的数据库,每次编译打包时都要修该配置文件比较麻烦,这时就可以使用环境隔离了. 配置 本地(Local), 开发(Dev), ...

  8. SQL-W3School-高级:SQL Date 函数

    ylbtech-SQL-W3School-高级:SQL Date 函数 1.返回顶部 1. SQL 日期 当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配. 只要 ...

  9. 免费下载 SetupVPN CRX 3.7.0 for Chrome OR QQ浏览器

    免费下载 SetupVPN CRX 3.7.0 for Chrome OR QQ浏览器 Lifetime Free VPN(微劈嗯) 下载setupvpn 3.7.0的crx文件, 打开chrome的 ...

  10. flask_security学习笔记

    [Flask Security]当不能通过认证的时候制定跳转   Flask Security这个插件能对用户权限进行很好的控制.通过三个model实现:User,存放用户数据Role,存放角色数据U ...