因为最近 build docker image 非常频繁,导致 OS Disk 常常会爆满,因此想将 Docker 的预设路径改到另外挂载的 Data Disk 中,在这边做一个纪录。
本文环境
OS 版本
透过 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"
Docker 版本
透过 sudo docker -v
指令看出使用的是 v19.03.12
这个版本
Docker version 19.03.12, build 48a66213fe
需求
将 docker 的路径从预设的改到 /data/docker
底下
整体步骤
停止 docker
透过以下指令将 docker 停止,避免在更换的过程中还有服务在运作造成资料的误差
sudo systemctl stop docker
修改 daemon.json
透过 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
完成以上步骤后,透过以下指令将 docker
进行启动
sudo systemctl start docker
检查是否正确
可以透过以下指令逐步检查 docker 环境是否有遗漏
//检查 docker imagedocker images//检查 containerdocker ps
小结
使用以上步骤就可以将 docker 的预设路径进行更改拉,如果大家有更好的方法欢迎在底下留言呦!