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
数据目录:
[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 更新版本的更多相关文章
- [转帖]Docker 更新版本 以及 data-root
Docker 更新版本 https://www.cnblogs.com/operationhome/archive/2019/08/11/11322150.html 园友说 docker 使用了 da ...
- docker最新版本以及docker-compose安装脚本
docker最新版本以及docker-compose编排工具安装脚本 git clone https://github.com/luckman666/shell_scripts.git cd shel ...
- 安装TortoiseGit出现提示“您必须安装带有更新版本Windows Installer服务的Windows Service Pack”-解决方法
我的系统是xp sp3安装TortoiseGit时出现了错误提示“您必须安装带有更新版本Windows Installer服务的Windows Service Pack”. 解决方法,到微软官方下载相 ...
- struts2更新版本操作有关事项备注
struts2更新版本操作有关事项备注, 更新主要jar包:struts2-convention-plugin-version,struts2-core-version, struts2-spring ...
- [转] Android SDK manager 无法获取更新版本列表
打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...
- 解决xp下无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本Wi
今天装 tortoisegit 的时候发现安装包不能使用.报错无法通过windows installer服务安装此安装程序包.您必须安装带有更新版本Windows Installer服务的Window ...
- android 检查软件是否有更新版本
import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import com.yuxin.m ...
- ROS(indigo) 安装和使用更新版本的Gazebo----3,4,5,6,7 附:中国机器人大赛中型组仿真比赛说明
ROS(indigo) 安装和使用更新版本的Gazebo,本文以7为例. Gazebo7支持更多新的功能,如果使用下面命令安装ROS(indigo): ~$ sudo apt-get install ...
- Fastjson 爆出远程代码执行高危漏洞,更新版本已修复
fastjson近日曝出代码执行漏洞,恶意用户可利用此漏洞进行远程代码执行,入侵服务器,漏洞评级为“高危”. 基本介绍fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器 ...
随机推荐
- Don’t Repeat Yourself
The Don’t Repeat Yourself (DRY) principle states that duplication in logic should be eliminated via ...
- Modbus RTU 介绍
S7-1200 Modbus RTU 通信概述 Modbus具有两种串行传输模式:分别为ASCII和RTU.Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modb ...
- c++ 组合
组合 题目描述 已知一个一维数组a1..n,又已知一整数m. 如能使数组a中任意几个元素之和等于m,则输出YES,反之则为NO. 输入 输入包括两行,第一行包含两个整数n m(1<=n<2 ...
- 简单说一下SS的原理
假设有主机A和B还有C.主机A是客户机,就是你的电脑,主机B是服务器,也就是位于日本的那台电脑.主机C是你需要访问的网站.在没有SS的情况下,数据传输的流程是:A-->C.在有SS的情况下,概括 ...
- JAVA包装类解析和面试陷阱分析
包装类 什么是包装类 虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎 ...
- NOIP2015斗地主题解 7.30考试
问题 B: NOIP2015 斗地主 时间限制: 3 Sec 内存限制: 1024 MB 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共 ...
- 数据库系统概念:SQL的数据类型与模式、授权
public class DataBase { public static void main() { } } /* 4.5 SQL的数据类型与模式 4.5.1 SQL的日期与时间类型 SQL标准支持 ...
- [记录]Python的master-worker和epoll模式
#master-worker模型: #coding:utf-8 import os import sys import socket import time import traceback impo ...
- 和朱晔一起复习Java并发(三):锁(含锁性能测试)
这个专题我发现怎么慢慢演化为性能测试了,遇到任何东西我就忍不住去测一把.本文我们会大概看一下各种锁数据结构的简单用法,顺便也会来比拼一下性能. 各种并发锁 首先,我们定一个抽象基类,用于各种锁测试的一 ...
- DAX 第六篇:统计函数
统计函数用于创建聚合,对数据进行统计分析.在使用统计函数时,必须考虑到数据模型,表之间关系,数据重复等因素,一般都会搭配过滤函数实现数据的提取和分析. 统计量一般是:均值.求和.计数.最大值.最小值. ...