天天看點

/var/lib/docker 空間不足的遷移方案

背景:相信很多人都像我一樣,要遷移這個目錄,是因為磁盤空間不足了,我需要找個空間夠的挂載點,把這目錄的内容遷移過去,步驟如下:

我先檢視空間足夠的挂載點,我選擇了/opt(原來的/挂載點已隻剩5G空間,包括最下面9行也是使用/的空間,是以有必要遷移到 /opt 下)

/var/lib/docker 空間不足的遷移方案

1. 停止docker服務

systemctl stop docker
systemctl stop docker.socket      

2. 備份 /var/lib/docker目錄下面的檔案到 /opt/var/lib/ (這個目錄可自定義,因為我的挂載盤/opt下空間很多,是以打算把 /var/lib/docker 下的檔案遷移到 /opt/var/lib/docker 下):

rsync -avz /var/lib/docker /opt/var/lib/      

注意:這裡不使用cp -rf,而使用 rsync -avz,我在實際使用cp -rf時,發覺docker啟動起來後,有些容器就是啟動不起來,具體原因沒有太細去分析,大概看到我的一個rocketmq容器裡報權限不足之類的,後來還是參考網上的博文使用rsync -avz了。

3. 配置 /etc/systemd/system/docker.service.d/devicemapper.conf。檢視 devicemapper.conf 是否存在。如果不存在,就建立。

sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo vi /etc/systemd/system/docker.service.d/devicemapper.conf      

4. 在 devicemapper.conf 寫入:(同步的時候把父檔案夾一并同步過來,實際上的目錄應在 /opt/var/lib/docker )

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/opt/var/lib/docker      

5. 重新加載 docker

systemctl daemon-reload
systemctl restart docker
systemctl enable docker      

6. 為了确認一切順利,運作

docker info      

指令檢查Docker 的根目錄.它将被更改為 /opt/var/lib/docker

/var/lib/docker 空間不足的遷移方案

7. 啟動成功後,再确認之前的鏡像還在,服務能正常啟動:

/var/lib/docker 空間不足的遷移方案
/var/lib/docker 空間不足的遷移方案

8. 确定容器沒問題後,再删除 /var/lib/docker/ 目錄中的檔案(我為了保險起見,還是先打包了 /var/lib/docker 下的檔案,以防萬一以後有問題出現)