天天看點

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

1、檢視docker和檔案系統

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

[[email protected] 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沒有安裝,則使用yum -y intall 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 檔案的内如如下:

[[email protected] 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
           

主控端中的分區大小資訊:

[[email protected] ~]# 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 -aXS /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來完成。

版權聲明:本文為CSDN部落客「weixin_33826268」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_33826268/article/details/92208792