前言
Docker 預設安裝的情況下,會使用 /var/lib/docker/
目錄作為儲存目錄,用以存放拉取的映象和建立的容器等。
不過由於此目錄一般都位於系統盤,遇到系統盤比較小,而映象和容器多了後就容易出問題,這裡說明一下如何修改 Docker 的預設儲存目錄。
一、檢視當前docker的預設儲存目錄
docker info
# docker 儲存目錄
Docker Root Dir: /var/lib/docker
二、停止docker服務
systemctl stop docker
三、目錄遷移
建立新的 docker 目錄,執行命令 df -h
,找一個大的磁碟。
我在 /home
目錄下面建了 /home/docker
目錄,執行的命令是:
mkdir -p /home/docker
遷移 /var/lib/docker
目錄下面的檔案到 /home/docker
# 和cp類似,只不過是會自動過濾,目標目錄有的檔案不會重新複製
rsync -avz /var/lib/docker /home/docker
四、編輯/etc/docker/daemon.json檔案
vim /etc/docker/daemon.json
預設情況下這個配置檔案是沒有的,可以新建一個,然後寫入以下內容:
{
"graph": "/home/docker"
}
取決於具體的 ubuntu
版本或者 kernel
版本決定要用 data-root
還是 graph
。
- Docker 17.05 及以後的版本使用 "data-root"。
- 舊版本可能使用 "graph",但建議升級到新版本。
在較新的 Docker 版本中,應該使用 "data-root" 配置項,而不是 "graph"。 "data-root或者graph": "/home/docker"
五、儲存退出,然後重啟 docker 服務
# reload配置檔案
systemctl daemon-reload
# 重啟docker
systemctl restart docker
如果 docker 啟動失敗,檢視失敗原因
systemctl status docker
journalctl -u docker.service
sudo journalctl -u docker --no-pager
六、檢查docker儲存路徑是否配置成功
docker info | grep "Docker Root Dir"
Docker Root Dir: /home/docker
如果修改失敗,可以檢查 Docker 服務啟動引數:
檢視 Docker 服務的啟動引數,確保沒有在命令列中指定 data-root
。
可以檢視 /lib/systemd/system/docker.service
或 /etc/systemd/system/docker.service.d/
下的檔案,看看是否有相關配置:
vim /etc/systemd/system/docker.service.d/docker-options.conf
自己手動配置 data-root
。
然後重啟 docker,檢視是否成功。
七、啟動成功後,再確認之前的映象還在
docker ps -a
docker images
八、確定容器、映象沒問題後,刪除/var/lib/docker/目錄中的檔案。
rm -rf /var/lib/docker/*