修改docker的預設儲存位置及映象儲存位置

牛奔發表於2024-09-11

前言

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/*

相關文章