因為最近 build docker image 非常頻繁,導致 OS Disk 常常會爆滿,因此想將 Docker 的預設路徑改到另外掛載的 Data Disk 中,在這邊做一個紀錄。
透過 sudo cat /etc/os-release
指令看出,使用的是 CentOS 7
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
透過 sudo docker -v
指令看出使用的是 v19.03.12
這個版本
Docker version 19.03.12, build 48a66213fe
將 docker 的路徑從預設的改到 /data/docker
底下
透過以下指令將 docker 停止,避免在更換的過程中還有服務在運作造成資料的誤差
sudo systemctl stop docker
透過 vim
修改 /etc/docker
路徑底下的 daemon.json
,加入 data-root
的 key,value 填上 /data/docker
[備註1] 如果沒有 /etc/docker/daemon.json
這個檔案的話可以自行建立一個
[備註2] 如果 docker 的版本低於 v17.05.0
的話可以使用 graph
這個 key
{
"data-root": "/data/docker"
}
在這邊我們使用 rsync
來進行複製,rsync
有一個好處就是在複製的時候可以連同資料夾或檔案的擁有者、群組或是權限設定都一併的複製過去,關於 rsync
的詳細說明可以參考這裡。
由於 docker 的預設路徑為 /var/lib/docker
,因此我們要將這底下的所有資料都複製到 /data/docker
底下,透過以下指令可以完成這項需求
sudo rsync -avh /var/lib/docker/* /data/docker/
複製完畢之後可以透過 ls
的方式檢查 /data/docker
底下是否已經有相關的檔案,沒有問題的話應該要有以下這幾個目錄
builder buildkit containers image network overlay2 plugins runtimes swarm tmp trust volumes
完成以上步驟後,透過以下指令將 docker
進行啟動
sudo systemctl start docker
可以透過以下指令逐步檢查 docker 環境是否有遺漏
//檢查 docker image
docker images
//檢查 container
docker ps
使用以上步驟就可以將 docker 的預設路徑進行更改拉,如果大家有更好的方法歡迎在底下留言呦!