Docker 更新版本
2019-08-11 22:09
1296 查看
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的, 所以我推测是由于 版本号过低,导致储存驱动使用不了,我们对系统进行快照后,进行升级内核。
升级内核之后,我们重启主机,发现是可以正常使用的。
相关文章推荐
- ubuntu 更新 docker 版本
- Centos7.2 新镜像、系统到手 更新清理 并且安装docker1.2以后版本 目前内容适合docker 1.7.x ce(社区版)
- Ubuntu Docker 版本的更新与安装
- Ubuntu Docker 版本的更新与安装
- 更新docker到最新版本
- Android版本检测与更新
- android studio 更新Gradle版本方法
- 部分NLuke版本源码更新(2009-11-1)
- iOS自动版本更新
- APPStore版本更新时,App 预览和屏幕快照规则以及经验
- Mac下更新npm版本
- 系列WAPPUSH代码-更新版本
- Android应用开发之APK版本更新的SDK及API
- App版本更新时对SQLite数据库升级或者降级遇到的问题
- 简单的版本更新
- MS CRM 2011 SDK更新——5.05版本
- 关于 智能杀毒伴侣 相关说明及技巧及版本更新 (不断更新)
- docker remote api 在systemd版本的docker
- 安卓(Android)应用版本更新方法
- 【版本更新】Aspose.Slides V17.10发布 | 支持免费下载