Docker 替換儲存的地方

一種是以直接修改 Docker Daemon 配置文件的方式,一種是用 rsync 的方式。基於安全,我建議使用 rsync 的方式。

使用 rsync 的方式

要知道 docker 的預設位置:

docker info | grep -i "docker root dir"

我在 ubuntu 會是 /var/lib/docker 。因為我的 /var/lib/docker 安裝在硬碟 sda2 容量不夠用,我希望移動到 sda3 的 /mnt/userdata/docker。以下提供完整的步驟來將 Docker 資料目錄從 /var/lib/docker 移動到 /mnt/userdata/docker,以釋放 sda2 的容量:

停止 Docker 服務

sudo systemctl stop docker

確保 /mnt/userdata 目錄存在,如果不存在,創建它

sudo mkdir -p /mnt/userdata

複製現有的 Docker 資料目錄到新的位置(這裡假設 sda3 已經掛載到 /mnt/userdata)

sudo rsync -aP /var/lib/docker/ /mnt/userdata/docker/

移動並作為備份原始的 Docker 資料目錄(強烈建議,之後沒問題再刪除)

sudo mv /var/lib/docker /var/lib/docker_backup

建立一個新的符號連結指向新的目錄

sudo ln -s /mnt/userdata/docker /var/lib/docker

啟動 Docker 服務

sudo systemctl start docker

確認 Docker 是否正確運作

sudo docker info

確認 /var/lib/docker 已經是符號連結到 /mnt/userdata/docker

ls -lh /var/lib/docker

如果一切正確,你應該能夠看到 /var/lib/docker 指向 /mnt/userdata/docker

使用 Docker Daemon

停止 docker 服務

sudo service docker stop

移動到新目錄,例如掛載的 mnt/userdata 底下

sudo mv /var/lib/docker /mnt/userdata/docker

修改配置文件,如果不存在就新增

sudo vim /etc/docker/daemon.json

添加以下內容

{
  "data-root": "/new/path/to/docker"
}

啟動 Docker 服務

sudo service docker start

發表迴響