Docker更改成OverlayFS存儲驅動

docker有6種存儲驅動方案,且都是寫時複製機制docker

  • aufs - unionfs類型,在文件層次上工做內存利用高效,僅有ubuntu支持
  • overlay/overlay2 - unionfs類型,在文件層次上工做內存利用高效,但分層文件的寫入會增加的比較大(須要較高Linux內核的支持)
  • devicemapper - 在block層次工做,分層文件寫入效率較高
  • btrfs
  • zfs - 推薦在paas上工做
  • vfs - 僅用於調試

推薦的驅動方案選擇ubuntu

  • CentOs -> devicemapper
  • Ubuntu -> overlay

文件系統會在容器啓動時建立,併爲根文件系統提供掛載點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
相關文章
相關標籤/搜索