Docker的鏡像存放目錄修改與遷移


1、查看docker和文件系統

Docker的鏡像以及一些數據都是在/var/lib/docker目錄下,它占用的是Linux的系統分區,也就是下面的/dev/vda1,當有多個鏡像時,/dev/vda1的空間可能不足,我們可以把docker的數據掛載到數據盤,例如:/dev/vdb目錄下。

[root@10-10-63-106 docker]# df -lhT Filesystem Type Size Used Avail Use% Mounted on /dev/vda1 xfs 20G 3.8G 16G 20% / devtmpfs devtmpfs 916M 0 916M 0% /dev tmpfs tmpfs 921M 0 921M 0% /dev/shm tmpfs tmpfs 921M 43M 878M 5% /run tmpfs tmpfs 921M 0 921M 0% /sys/fs/cgroup /dev/vdb xfs 100G 11G 90G 11% /data 

2、備份fstab和遷移已有的文件

其中主要的步驟如下:

(1) 首先,備份fstab文件 sudo cp /etc/fstab /etc/fstab.$(date +%Y-%m-%d)

(2) 停止docker, 用rsync同步/var/lib/docker到新位置.

   如果rsync沒有安裝,則使用apt install -y rsync 進行安裝,停止docker ,service docker stop,在數據分區中建立要掛載的目錄,mkdir /data/docker 使用rsync工具同步,~~rsync -aXS /var/lib/docker/. /data/docker/~~,這可能需要花費的較長的時間,取決於/var/lib/docker的大小。 

在使用overlay文件系統的Docker上面,會出現數據快速膨脹的問題。
解決辦法,使用下面的方法復制文件:
** rsync -avPHSX /var/lib/docker /new/partition/**
解釋:

  • -a,檔案模式。
  • -v,顯示詳細信息。
  • -P,顯示進度。
  • -H,處理Hardlink為Hardlink,關鍵!
  • -S,稀疏文件優化處理。
  • -X,保留所有屬性。

3、修改fstab,然后重新掛載

修改fstab 在該文件中把下面一行添加到fstab里,將新位置掛載到 /var/lib/docker /data/docker /var/lib/docker none bind 0 0 文件的內如如下:

[root@10-10-63-106 docker]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu Jul 31 07:50:13 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/vda1 / xfs errors=remount-ro 0 1 /swapfile none swap defaults 0 0 /dev/vdb /data xfs defaults,noatime 0 0 /data/docker /var/lib/docker none bind 0 0 

(4)重新掛載 mount –a

(5)使用下面的命令檢查一下

df

/var/lib/docker/ Filesystem 1K-blocks Used Available Use%

Mounted on /dev/vdb 104806400 47204 104759196 1% /var/lib/docker

(6)進入Container查看我們的空間

bash-4.1# df -lhT Filesystem Type Size Used Avail Use% Mounted on rootfs rootfs 9.8G 1.4G 7.9G 15% / tmpfs tmpfs 921M 0 921M 0% /dev shm tmpfs 64M 0 64M 0% /dev/shm /dev/vdb xfs 100G 2.1G 98G 3% /etc/resolv.conf /dev/vdb xfs 100G 2.1G 98G 3% /etc/hostname /dev/vdb xfs 100G 2.1G 98G 3% /etc/hosts tmpfs tmpfs 921M 0 921M 0% /run/secrets tmpfs tmpfs 921M 0 921M 0% /proc/kcore 

沒有更改/var/lib/docker路徑之前的情況:

bash-4.1# df -lhT Filesystem Type Size Used Avail Use% Mounted on rootfs rootfs 9.8G 1.4G 7.9G 15% / tmpfs tmpfs 921M 0 921M 0% /dev shm tmpfs 64M 0 64M 0% /dev/shm /dev/vda1 xfs 20G 13G 6.9G 66% /etc/resolv.conf /dev/vda1 xfs 20G 13G 6.9G 66% /etc/hostname /dev/vda1 xfs 20G 13G 6.9G 66% /etc/hosts tmpfs tmpfs 921M 0 921M 0% /run/secrets tmpfs tmpfs 921M 0 921M 0% /proc/kcore 

宿主機中的分區大小信息:

[root@10-10-63-106 ~]# df -lhT Filesystem Type Size Used Avail Use% Mounted on /dev/vda1 xfs 20G 13G 6.9G 65% / devtmpfs devtmpfs 916M 0 916M 0% /dev tmpfs tmpfs 921M 0 921M 0% /dev/shm tmpfs tmpfs 921M 89M 832M 10% /run tmpfs tmpfs 921M 0 921M 0% /sys/fs/cgroup /dev/vdb xfs 100G 33M 100G 1% /data 

4、總結一下,搞成個腳本來執行

#備份fstab文件 sudo cp /etc/fstab /etc/fstab.$(date +%Y-%m-%d) #停止docker sudo service docker stop #/data/docker/為目標路徑,根據機器情況設定。 export DOCKER_PATH=/data/docker/ #用rsync同步/var/lib/docker到新位置 rsync -avPHSX /var/lib/docker/. $DOCKER_PATH echo $DOCKER_PATH /var/lib/docker none bind 0 0 >> /etc/fstab mount –a df -h 

把上面的保存為腳本,修改里面的路徑,然后添加執行權限,執行即可。

然后重啟docker(sudo service docker start),鏡像存儲就使用新的路徑了。

掛載新的文件目錄還可以使用軟連接 ln /var/lib/docker /targetpath/docker,或者使用Docker啟動參數-g path來完成。



作者:負二貸
鏈接:https://www.jianshu.com/p/6d5e471875c6
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM