重要更新:目前kernel在3.10.0-514以上自动支持overlay2存储驱动了,感谢红帽子和docker做出的不懈努力,本文写作时间较早,所以针对目前环境已经不在适用,谢谢!!


一、先决条件

1.CentOS7发行版默认的Kernel版本是3.10,但是Overlay2存储驱动需要4.0以上的kernel版本支持,所以必须手动升级Kernel版本至4.X。


2.CentOS7默认使用的文件系统是xfs,但xfs类型的文件系统参数d_type默认为false,需要重新格式化文件系统配置此参数。


3. Docker版本要求,我使用的是docker-ce-17.12,具体的兼容信息请看官网列表。


二、升级CentOS7 Kernel版本至4.X

1. 启用ELRepo仓库

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm


2. 安装最新的4.X内核

# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
# yum --enablerepo=elrepo-kernel install kernel-ml


3. 设置grub2

a.查看系统上的所有可用内核
# sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

b.设置4.x kernel为默认启动,“0”为上面AWK命令的结果
# grub2-set-default 0

c.生成grub配置文件并重启
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot


三、创建XFS文件系统

# fdisk /dev/sdb
# pvcreate /dev/sdb1
# vgextend centos /dev/sdb1
# lvcreate -L 5G -n lv_docker centos
# mkfs.xfs -n ftype=1 /dev/mapper/centos-lv_docker
# mkdir /usr/lib/docker
# mount /dev/mapper/centos-lv_docker /usr/lib/docker


四、安装Docker-CE

# yum install -y container-selinux libtool-ltdl libseccomp yum-plugin-ovl yum-utils device-mapper-persistent-data lvm2
# wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.12.1.ce-1.el7.centos.x86_64.rpm
# rpm -ivh docker-ce-17.12.1.ce-1.el7.centos.x86_64.rpm


五、配置Docker overlay2存储驱动并启动

# vim /etc/docker/daemon.json
{
  "storage-driver": "overlay2",
    "storage-opts": ["overlay2.override_kernel_check=true"]
}
# systemctl daemon-reload
# systemctl start docker
# docker info