阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Docker主机升级到4.9版本内核,使用Overlayfs取代Devicemapper

515次阅读
没有评论

共计 5979 个字符,预计需要花费 15 分钟才能阅读完成。

前言:由于之前运行 Docker 系统了几台机器很久一直没有更新,docker 版本为 1.9.1。使用的 docker 存储驱动为 Devicemapper。本次需要更新 Docker 的管理平台,索性也就将底层的 docker 版本也升级到新版,并更改 Devicemapper 为 overlayfs。由于操作系统是 CentOS Linux release 7.1.1503 (Core),内核版本 3.10.0-229.el7.x86_64,该内核版本已经支持 overlayfs。但是由于新的内核 4.9 已经发布,在 4.9 的内核版本中,对硬件和文件系统方面的改进也很多,涉及到 Btrfs、XFS、F2FS、OverlayFS 的 UBIFS 支持、FUSE 支持 POSIX ACL、OverlayFS SELinux 等方面。所以本次也将内核版本升级到 4.9。

更新如下

Kernel Version:  3.10.0–>4.9.0

Docker Version:  1.9.1–>1.12.2

Storage Driver:  DeviceMapper–>Overlayfs

一:升级 Kernel 版本

(1)安装 yum 源

$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
warning: /var/tmp/rpm-tmp.X3PpyZ: Header V4 DSA/SHA1 Signature, key ID baadae52: NOKEY
Preparing…                          ################################# [100%]
Updating / installing…
  1:elrepo-release-7.0-2.el7.elrepo  ################################# [100%]

(2)安装 kernel

$ yum -y –enablerepo=elrepo-kernel install  kernel-ml-devel-4.9.0 kernel-ml-4.9.0 
======================================================================= 
Package          Arch      Version            Repository        Size
======================================================================= 
Installing:
kernel-ml        x86_64    4.9.0-1.el7.elrepo  elrepo-kernel      39 M
kernel-ml-devel  x86_64    4.9.0-1.el7.elrepo  elrepo-kernel      11 M
Transaction Summary
======================================================================== 
Install  2 Packages
Installed:
  kernel-ml.x86_64 0:4.9.0-1.el7.elrepo 
  kernel-ml-devel.x86_64 0:4.9.0-1.el7.elrepo

(3)检查当前版本

$ uname -r
3.10.0-229.el7.x86_64

(4)检查 kernel 启动顺序

$ awk -F\’ ‘$1==”menuentry ” {print $2}’ /etc/grub2.cfg
CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core) with debugging
CentOS Linux 7 (Core), with Linux 3.10.0-229.el7.x86_64
CentOS Linux 7 (Core), with Linux 0-rescue-f7e36a944a3d4035a61da37d8d4e2313

(5)设置启动 kernel

根据上面检查 kernel 启动顺序,自上而下,从 0 开始的顺序。如果设置 4.9 启动那么如下命令

$grub2-set-default 0

重启

$reboot

(6)检查 kernel 版本

$ uname -r
4.9.0-1.el7.elrepo.x86_64

Kernel 升级完毕!!!

二:升级 Docker 版本

(1)关闭 docker 进程,卸载老版本

$ systemctl stop docker 
$ rpm -qa|grep docker
docker-engine-1.9.1-1.el7.centos.x86_64
docker-storage-setup-0.5-3.el7.centos.noarch
docker-engine-selinux-1.9.1-1.el7.centos.noarch
$ rpm -e docker-engine-1.9.1-1.el7.centos.x86_64
$ rpm -e docker-engine-selinux-1.9.1-1.el7.centos.noarch

(2)安装新版本

$ wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-1.12.2-1.el7.centos.noarch.rpm
$ wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.2-1.el7.centos.x86_64.rpm
# 使用 yum 命令可以解决依赖问题,如果直接 rpm 命令安装可能会报错。
$ yum install -y docker-engine-selinux-1.12.2-1.el7.centos.noarch.rpm
$ yum install -y docker-engine-1.12.2-1.el7.centos.x86_64.rpm

(3)检查新的 docker 版本

$ docker -v
Docker version 1.12.2, build bb80604

Docker 升级完毕!!!

三:使用 overlayfs

(1)检查是否有 overlayfs 模块

$ lsmod  | grep overlay
overlay                49152  0

没有的话下面命令加载

$ modprobe overlay

(2)为 overlayfs 目录挂一块盘

因为之前没有使用 docker 默认的 loopback 方式(因为不是物理块设备,性能很差,大小也有限制),而是单独拿了一块物理盘来做 Devicemapper。现在要将那块盘挂载到 overlayfs 的目录下使用。

注意:因为要改变存储方式,格式化盘。所以原来的数据肯定是没有了。一会 docker 启动后,原来的容器也是不存在的。

如果直接执行 mkfs.xfs  /dev/xvdb,肯定会报错 device is busy,因为之前的 devicemapper 映射关系还在,磁盘被占用,是无法被格式化的。

1: 查看分区情况

$ cat /proc/partitions
major minor  #blocks  name
202        0  68157440 xvda
202        1    512000 xvda1
202        2    5242880 xvda2
202        3    2097152 xvda3
202        4          1 xvda4
202        5  60303360 xvda5
202      16  104857600 xvdb
202      17  104856576 xvdb1
253        0    106496 dm-0
253        1  103698432 dm-1
253        2  103698432 dm-2

2: 查看 device mapper 的状态

$ dmsetup status
docker–vg-docker–pool: 0 1159217152 thin-pool
docker–vg-docker–pool_tdata: 0 1159217152 linear 
docker–vg-docker–pool_tmeta: 0 1179648 linear

3: 查看 device mapper 设备依赖关系

$dmsetup deps
docker–vg-docker–pool: 2 dependencies : (253, 1) (253, 0) 
docker–vg-docker–pool_tdata: 1 dependencies  : (202, 17)
docker–vg-docker–pool_tmeta: 1 dependencies  : (202, 17)

输出信息中(202, 17), 对应了分区上的 xvdb 这个设备,说明依赖的是 xvdb

4:删除掉 device mapper 映射出来的设备

$ dmsetup remove docker–vg-docker–pool
$ dmsetup remove docker–vg-docker–pool_tdata
$ dmsetup remove docker–vg-docker–pool_tmeta
$ dmsetup status
No devices found

5:格式化磁盘

$ mkfs.xfs -f  /dev/xvdb

6:创建 docker 的数据目录,挂载磁盘

$ mkdir -p /data/docker
$ mount /dev/xvdb /data/docker
$ df -h
Filesystem      Size  Used Avail Use% Mounted ondevtmpfs         
16G    0  16G  0% /dev/dev/xvda5     
58G  2.3G  56G  4% //dev/xvda2     
5.0G  40M  5.0G  1% /home/dev/xvda1     
497M  161M  337M  33% /boot/dev/xvdb     
100G  33M  100G  1% /data/docker

(3)修改 docker 启动方式为 overlayfs

vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/docker daemon –storage-driver=overlay –graph=”/data/docker” –insecure-registry registry.cntv.net

(4)reload 配置并启动 docker

$ systemctl daemon-reload                                     
$ systemctl start docker                   
$ docker psCONTAINER ID        IMAGE              COMMAND            CREATED            STATUS              PORTS              NAMES
$ ls /data/dockercontainers  image  network  overlay  swarm  tmp  trust  volumes

overlayfs 配置完毕!!!

遇到的问题:

在修改 docker 启动配置时 docker.service 原来的默认配置中是这样的

ExecStart=/usr/bin/dockerd -H fd://

当我改成

ExecStart=/usr/bin/dockerd –storage-driver=overlay –graph=”/data/docker” –insecure-registry registry.cntv.net -H fd://

启动的时候,docker 报错了。

报错内容:no sockets found via socket activation: make sure the service was started by systemd.

Docker 主机升级到 4.9 版本内核,使用 Overlayfs 取代 Devicemapper

在 github 查到了这个更新。1.12 版本之后这个配置发生了改变。解决办法中将 -H fd:// 从 ExecStart 指令中删除,改成如下方式解决。

1 ExecStart=/usr/bin/dockerd –storage-driver=overlay –graph=”/data/docker” –insecure-registry registry.cntv.net

地址:https://github.com/docker/docker/releases/tag/v1.12.5

Docker 主机升级到 4.9 版本内核,使用 Overlayfs 取代 Devicemapper

更多 Docker 相关教程见以下内容

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

64 位 CentOS 下安装与启动 Docker  http://www.linuxidc.com/Linux/2017-03/141714.htm

CentOS7.2 定制属于自己的 Docker 私有库  http://www.linuxidc.com/Linux/2017-03/141850.htm

Ubuntu 使用 VNC 运行基于 Docker 的桌面系统  http://www.linuxidc.com/Linux/2015-08/121170.htm

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm

在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm

在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm

Ubuntu 16.04 上 Docker 使用手记 http://www.linuxidc.com/Linux/2016-12/138490.htm

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/142138.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5979字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7960752
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...