[转帖]Docker 更新版本 以及 data-root
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。
在
overlay
和overlay2
驱动程序支持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的更多相关文章
- Docker 更新版本
Docker 更新版本 原来版本 1.10 更新后的版本 19.03.1 更新 Docker 版本需要注意的问题: 注意系统是否支持新版本的储存驱动. 19.03.01 版本默认使用的储存驱动是 ov ...
- [转帖]Docker的daemon.json的作用
Docker(十六)-Docker的daemon.json的作用 https://www.cnblogs.com/zhuochong/p/10070434.html jfrog 培训的时候 说过这个地 ...
- [转帖]Docker从入门到动手实践
Docker从入门到动手实践 https://www.cnblogs.com/nsky/p/10853194.html dockerfile的图很好呢. 但是自己没有做实验 , 其实知识都挺好. do ...
- [转] Android SDK manager 无法获取更新版本列表
打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...
- ROS(indigo) 安装和使用更新版本的Gazebo----3,4,5,6,7 附:中国机器人大赛中型组仿真比赛说明
ROS(indigo) 安装和使用更新版本的Gazebo,本文以7为例. Gazebo7支持更多新的功能,如果使用下面命令安装ROS(indigo): ~$ sudo apt-get install ...
- Android 6.0 7.0 8.0 一个简单的app内更新版本-okgo app版本更新
登陆时splash初始页调用接口检查app版本.如有更新,使用okGo的文件下载,保存到指定位置,调用Android安装apk. <!-- Android 8.0 (Android O)为了针对 ...
- android SDK manager 无法获取更新版本列表【转载】
http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息: http://developer.android.c ...
- android SDK manager 无法获取更新版本的解决办法
http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息: http://developer.android.c ...
- docker最新版本以及docker-compose安装脚本
docker最新版本以及docker-compose编排工具安装脚本 git clone https://github.com/luckman666/shell_scripts.git cd shel ...
随机推荐
- 数据结构实验之数组三:快速转置(SDUT 3347)
Problem Description 转置运算是一种最简单的矩阵运算,对于一个m*n的矩阵M( 1 = < m < = 10000,1 = < n < = 10000 ),它 ...
- 为ubuntu安装powerline记录
C:\Users\win10的用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\L ...
- Vue 的基本认识
1.1.1. 官网 1) 英文官网: https://vuejs.org/ 2) 中文官网: https://cn.vuejs.org/ 1.1.2. 介绍描述 1) 渐进式 JavaScript ...
- Everything 的高级用法
文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论
- 客户端配置代理服务实现yum上外网
vi /etc/profile http_proxy=http://172.20.188.193:3128/https_proxy=https://172.20.188.193:3128/expor ...
- WINFORM控件tabcontrol,隐藏,调用等等
1先说显示项的控制, 第一个是selectedIndex属性这个实用性不是太强,但是如果不涉及到隐藏,删除,增加tabpage的话,也可以用. 第二个是selectedTab=tabPage1,这个属 ...
- Clock Generator PLL with Integrated VCO_ADF4360-9
Clock Generator PLL with Integrated VCO_ADF4360-9 2和3之间需要有大于15ms的时间间隔
- 在调试linux的休眠功能时如何打开调试信息开关?
答:在bootargs中添加参数no_console_suspend即可进行调试
- 利用socket实现聊天-Android端核心代码
实体类与服务端报错一致,包括包名 package loaderman.im.bean; /** * 一个聊天消息的JavaBean * * */ public class ChatMsgEntity ...
- 启动elasticsearch的时候报出Exception in thread "main" SettingsException[Failed to load settings from /usr/local/elasticsearch/config/elasticsearch.yml]; nested: MarkedYAMLException[while scanning a simple ke
故障现象: [elasticsearch@tiantianml- ~]$ /usr/local/elasticsearch/bin/elasticsearch Exception in thread ...