剛開始使用docker時屋厘,不太關(guān)注docker 存儲鏡像和容器的位置,使用默認(rèn)目錄。當(dāng)使用docker啟動的容器越來越多時见秽,鏡像和容器占用空間也越來越大。特別是使用Linux云服務(wù)器ECS的情況下讨盒,默認(rèn)系統(tǒng)盤大小有限解取,默認(rèn)目錄是在系統(tǒng)盤,很容易就將磁盤占滿返顺,導(dǎo)致無法重新啟動更多的容器禀苦。
下面以CentOS 7為例蔓肯,講解如何修改docker的默認(rèn)存儲位置。修改默認(rèn)存儲位置振乏,分為兩種情況:
- 保留原有鏡像和容器
- 不保留原有鏡像和容器
1 保留原有鏡像和容器
操作方法要點:將原有的鏡像和容器移動到新的位置蔗包,并在原來的目錄創(chuàng)建軟鏈接,軟鏈接指向新的鏡像和容器存儲位置慧邮。
例如调限,CentOS 7默認(rèn)docker存儲位置是/var/lib/docker,新的存儲位置:/mnt/data/docker
操作步驟命令:
- 確認(rèn)當(dāng)前的docker存儲位置
# docker info
找到Server下的Docker Root Dir標(biāo)記误澳,內(nèi)容是當(dāng)前docker鏡像和容器的存儲位置耻矮。
- 停止docker服務(wù)
systemctl stop docker
- 將原有數(shù)據(jù)移動到目標(biāo)位置
例如,CentOS 7默認(rèn)docker存儲位置是/var/lib/docker忆谓,新的存儲位置:/mnt/data/docker
cp -rp /var/lib/docker /mnt/data/docker
- 創(chuàng)建軟連接指向?qū)嶋H存儲位置
q勺啊!倡缠!強(qiáng)烈建議操作之前先進(jìn)行備份I诿狻!昙沦!
# 備份
mv /var/lib/docker /var/lib/docker-bak-20211202
# 創(chuàng)建軟連接/var/lib/docker铁瞒,指向新的存儲位置/mnt/data/docker
ln -s /mnt/data/docker /var/lib/docker
- 啟動docker服務(wù)
systemctl start docker
- 修改結(jié)果確認(rèn)
運行docker info
,檢查Server下的Docker Root Dir標(biāo)記桅滋,顯示的路徑應(yīng)該是新的docker鏡像和容器存儲位置慧耍,如本例的/mnt/data/docker
。
2 不保留原有鏡像和容器
例如丐谋,CentOS 7默認(rèn)docker存儲位置是/var/lib/docker芍碧,新的存儲位置:/mnt/data/docker
- 確認(rèn)當(dāng)前的docker存儲位置
# docker info
找到Server下的(1) Docker Root Dir標(biāo)記,內(nèi)容是當(dāng)前docker鏡像和容器的存儲位置;(2)Storage Driver標(biāo)記号俐,內(nèi)容是存儲驅(qū)動器名稱泌豆。
- 停止docker服務(wù)
systemctl stop docker
- 創(chuàng)建drop-in目錄和drop-in文件
mkdir /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/docker.conf
echo "[Service]">>/etc/systemd/system/docker.service.d/docker.conf
echo "ExecStart=">>/etc/systemd/system/docker.service.d/docker.conf
echo "ExecStart=/usr/bin/dockerd --graph="/mnt/data/docker" --storage-driver=overlay2">>/etc/systemd/system/docker.service.d/docker.conf
/mnt/data/docker
是新的存儲位置,而overlay2
是當(dāng)前docker所使用的存儲驅(qū)動吏饿。
- 重新加載服務(wù)守護(hù)程序和啟動docker服務(wù)
systemctl daemon-reload
systemctl start docker
- 修改結(jié)果確認(rèn)
運行docker info
踪危,檢查Server下的Docker Root Dir標(biāo)記,顯示的路徑應(yīng)該是新的docker鏡像和容器存儲位置猪落,如本例的/mnt/data/docker
贞远。