Docker 更新版本

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

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- docker-ce-cli- 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 容器后,执行构建后,发现有下面的报错。

1565084429253

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

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

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

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

作者:理想三旬
出处:https://www.cnblogs.com/operationhome/p/11322150.html

相关文章
|
6月前
|
前端开发 jenkins 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
169 1
|
24天前
|
机器人 网络安全 数据安全/隐私保护
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
本文介绍了如何在服务器上搭建NTQQ机器人,通过官方NTQQ对接各框架,实现QQ登录的稳定运行。文章提到了需要准备一台服务器和相应的软件,并详细描述了通过SSH链接服务器、创建文件夹和配置文件、编辑配置文件地址端口、运行容器等步骤。同时,文章还介绍了VNC连接的使用和配置,以及使用watchtower进行NTQQ的更新。文章总结起来就是在服务器上搭建NTQQ机器人,实现QQ登录的稳定性和自动登录功能,同时提供了更新和维护的方法。
58 3
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
|
6月前
|
jenkins 网络安全 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-后端项目发布(四)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-后端项目发布(四)
125 3
|
2月前
|
Docker 容器
如何查看docker版本|12
如何查看docker版本|12
37 2
|
1月前
|
NoSQL MongoDB Docker
求助,有没有大神可以找到arm64架构下mongodb的3.6.8版本的docker镜像?
在Docker Hub受限的情况下,寻求适用于ARM架构的docker镜像资源或拉取链接,以便在x86架构上获取;内网中的机器为ARM架构,因此优先请求适合ARM的Docker镜像或Dockerfile,非常感激您的帮助。
|
6月前
|
Docker 容器
Docker部署minio-arm64版本,阿里官方推荐
Docker部署minio-arm64版本,阿里官方推荐
|
3月前
|
关系型数据库 MySQL Linux
一文教会你如何在Linux系统中使用Docker安装Mysql 5.7版本 【详细过程+图解】
这篇文章提供了在Linux系统中使用Docker安装Mysql 5.7版本的详细过程和图解,包括安装指定版本、创建实例、启动、使用Navicat连接测试、文件挂载与端口映射、进入容器、配置文件修改以及重新启动容器等步骤。
一文教会你如何在Linux系统中使用Docker安装Mysql 5.7版本 【详细过程+图解】
|
3月前
|
Web App开发 关系型数据库 PHP
使用 Docker 快速搭建多版本 PHP 开发环境
使用 Docker 快速搭建多版本 PHP 开发环境
78 2
|
5月前
|
Cloud Native 安全 Docker
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
120 5
|
5月前
|
应用服务中间件 网络安全 nginx
docker 搭建 最新版本的 gitlab,使用HTTPS访问,以及gitlab的基础使用讲解
docker 搭建 最新版本的 gitlab,使用HTTPS访问,以及gitlab的基础使用讲解