关键词:
前言:由于之前运行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.
在github查到了这个更新。1.12版本之后这个配置发生了改变。解决办法中将-H fd://从ExecStart指令中删除,改成如下方式解决。
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
本文出自 “酱酱酱子” 博客,请务必保留此出处http://heqin.blog.51cto.com/8931355/1885730
docker——安装部署(代码片段)
前言从2017年3月开始docker在原来的基础上分为两个分支版本:DockerCE和DockerEE。DockerCE即社区免费版,DockerEE即企业版,强调安全,但需付费使用。Docker官方要求要CentOS7.0及以上系统版本,本文介绍DockerCE在CentOS下的安装使用。&n... 查看详情
centos6yum方式升级内核
最近没有时间好久没有写文章了,今天由于需要安装docker学习虚拟容器的知识,需要升级OS的内核。目前我这边使用的OS是centos6.5,内核是2.6版本的,如下:cat/etc/issueuname-r因为docker的使用需要3.0以上内核的支持,当然也是可以使... 查看详情
Docker - Ubuntu 20.04 升级后没有路由到主机
】Docker-Ubuntu20.04升级后没有路由到主机【英文标题】:Docker-noroutetohostafterUbuntu20.04upgrade【发布时间】:2021-04-0610:01:35【问题描述】:多年来,我一直在为一些应用程序使用docker-compose,最近,在将主机操作系统从Ubuntu18.04升级到U... 查看详情
docker从零开始网络(一)overly网络
...计阅读时间: 11分钟该overlay网络驱动程序会创建多个docker进程主机之间的分布式网络。该网络位于(覆盖)特定于主机的网络之上,允许连接到它的容器(包括群集服务容器)安全地进行通信。Docker透明地处理每个数据包与... 查看详情
centos6.5内核升级
安装docker要满足一定的条件,对于cents系统,要求必须是64位,并且内核版本是3.10以上。 如果你的centos操作系统内核低于3.10,需要升级到这个版本以上,才能安装docker。第一步,先看目前的内核版本uname-r 在我的系统上... 查看详情
docker安全管理—-tls(安全认证)(代码片段)
一、Docker容器与虚拟机的区别1.隔离与共享虚拟机通过添加Hypervisor层,虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核。而Docker容器则是通过隔离的方式,将文件系统、进程、设备、网... 查看详情
centos通过yum的方式升级内核
...软件时,可能对我们的系统内核版本有要求。比如在安装docker要满足一定的条件,对于centos系统,要求必须是64位,并且内核版本是3.10以上。如果你的centos操作系统内核低于3.10,需要升级到这个版本以上,才能安装docker。准备... 查看详情
docker容器的安全(代码片段)
Docker容器与虚拟机的区别1.隔离与共享虚拟机通过添加Hypervisor层,虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核。而Docker容器则是通过隔离的方式,将文件系统、进程、设备、网络等... 查看详情
表格标签的使用(代码片段)
在CentOS上安装Docker注意:切勿在没有配置DockerYUM源的情况下直接使用yum命令安装Docker。官方文档:https://docs.docker.com/engine/install/centos/1-准备工作1.1-系统要求DockerCE支持64位版本CentOS7,并且要求内核版本不低于3.10。CentOS7满足最低... 查看详情
docker支持centos6系统吗?
Docker官方已经不再支持CentOS6系统,因为CentOS6已经过时,已经不再接受安全更新和维护。从Docker20.10版本开始,Docker官方已经不再支持CentOS6系统,因此如果您使用的是CentOS6系统,则无法安装和运行Docker。如果您仍然需要在CentOS6... 查看详情
docker从入门到实践系列二-docker安装(代码片段)
...及内核(可选)卸载老版本安装依赖包设置阿里云镜像安装docker启动docker将docker服务设为开机启动停止docker检验安装是否成功查看centos版本Docker要求CentOS系统的内核版本高于3.10。通过命令:uname-r查看当前centos版本,如版本... 查看详情
centos7升级内核到最新版本
...,如果是非主流机型,手动安装很困难,最简单的办法是升级内核到最新版本。具体步骤如下:1、升级内核需要使用 elrepo的yum源,首先我们导入 elrepo的key &nb 查看详情
docker版本升级(代码片段)
1、查看系统要求Docker要求CentOS系统的内核版本高于3.10,查看CentOS的内核版本。uname -a2、删除旧版本yum remove docker docker-common docker-selinux docker-engine3、安装需要的软件包yum-util提供yum-config-manager功能,另外两个是devicemapper... 查看详情
docker版本升级(代码片段)
1、查看系统要求Docker要求CentOS系统的内核版本高于3.10,查看CentOS的内核版本。uname -a2、删除旧版本yum remove docker docker-common docker-selinux docker-engine3、安装需要的软件包yum-util提供yum-config-manager功能,另外两个是devicemapper... 查看详情
如何将 docker-compose 升级到最新版本
】如何将docker-compose升级到最新版本【英文标题】:Howtoupgradedocker-composetolatestversion【发布时间】:2018-09-2502:44:11【问题描述】:我已经使用命令安装了docker-composesudoaptinstalldocker-compose它安装了docker-compose1.8.0版并构建未知我需要... 查看详情
linux-升级内核
...pdateCentosKernel3.10to5.13latestHowtoUpgradetheLinuxKernelonCentOS7CentOS7Docker容器无法ping通宿主机ip问题解决记录-平台梦Centos7升级内核-野草博客Linux内核升级_Andy杨的博客-CSDN博客_linux内核升级工具升级CentOS7.9的内核版本-爱吃桔子的程序羊注... 查看详情
docker 如何使用其主机操作系统的 CPU 内核?
】docker如何使用其主机操作系统的CPU内核?【英文标题】:HowdoesdockeruseCPUcoresfromitshostoperatingsystem?【发布时间】:2013-12-0602:11:45【问题描述】:基于Docker基于LXC的事实,我的理解是Docker容器共享来自其主机操作系统的各种资源。... 查看详情
centos7为docker配置overlay存储驱动(代码片段)
前提:RHEL或CentOS使用新的docker存储驱动(overlayoroverlay2),需要升级系统内核版本到3.10.0-514以上版本。梳理步骤如下:确认内核3.10.0-514以上版本uname-r3.10.0-514.++++.x86_64系统升级sudoyumupgrade--assumeyes--tolerantsudoyumupdate--assumeyes确认内... 查看详情