docker有6种存储驱动方案,且都是写时复制机制docker
unionfs
类型,在文件层次上工做内存利用高效,仅有ubuntu支持unionfs
类型,在文件层次上工做内存利用高效,但分层文件的写入会增加的比较大(须要较高Linux内核的支持)推荐的驱动方案选择ubuntu
文件系统会在容器启动时建立,并为根文件系统提供挂载点centos
查看当前docker服务采用的存储方案bash
docker info | grep 'Storage Driver'
更改存储驱动为 OverlayFS
因为容器与宿主机共享内核,因此更改容器的存储驱动则须要更改宿主机的内核存储驱动来实现app
# 先按需备份全部镜像 # 关停docker服务 sudo service docker stop sudo chkconfig docker off # 使用 `overlay` 存储方案以前确保内核 `>=3.18`,推荐 `>= 4.0` # 下面升级内核到最新版 uname -r # 查看内核版本 sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # 导入key sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm # 安装centos7版本的el源 sudo yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-lt -y # 安装升级内核到最新 sudo grub2-set-default 0 # 将内核启动顺序设定到0(0号即为刚安装的内核) sudo reboot uname -r # 再次查看内核版本 # 设置overlay模块开机启动 sudo cat > /etc/sysconfig/modules/overlay.modules <<EOF #!/bin/sh /sbin/modinfo -F filename overlay > /dev/null 2>&1 if [ $? -eq 0 ]; then /sbin/modprobe overlay fi EOF chmod 755 /etc/sysconfig/modules/overlay.modules reboot sudo lsmod | grep overlay # 确认overlay模块是否加载 # 配置docker服务的存储驱动 sudo rm -rf /var/lib/docker # 删除docker根文件系统 sudo sed 's|STORAGE_DRIVER=devicemapper|STORAGE_DRIVER=overlay|g' /usr/lib/docker-storage-setup/docker-storage-setup # 更改存储驱动为overlay sudo docker-storage-setup # 重建docker根文件系统 # 重启docker服务 sudo chkconfig docker on sudo service docker start