docker 的默认门路位于 /var 中,但往往 /var 门路的容量并不大,一旦 docker 的镜像、层等稍等大一些,便有把 /var 写满的危险。
本文给出一种迁徙 docker 默认门路的办法.
批改配置文件
假如新的 docker 目录咱们设置为 /home/docker。
批改前咱们先备份一下:
panjie@debian-docker-pro:/lib/systemd/system$ sudo cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak
批改 /lib/systemd/system/docker.service 中的 ExecStart=/usr/bin/dockerd -H fd://...
为ExecStart=/usr/bin/dockerd -g /home/docker -H fd://
以下是比照信息;
panjie@debian-docker-pro:/home$ diff -uP -N /lib/systemd/system/docker.service.bak /lib/systemd/system/docker.service
--- /lib/systemd/system/docker.service.bak 2023-01-11 16:00:45.071017829 +0800
+++ /lib/systemd/system/docker.service 2023-01-11 16:03:42.330635006 +0800
@@ -10,7 +10,7 @@
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
-ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
+ExecStart=/usr/bin/dockerd -g /home/docker -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
进行服务
进行所有的正在运行的 docker 容器后,咱们开始进行 docker 服务
$ sudo systemctl stop docker
此时咱们将失去了配置文件曾经变更的揭示,而后执行使配置失效
$ sudo systemctl daemon-reload
同步数据
接下来咱们同步原文件夹中的数据
$ sudo rsync -aqxP /var/lib/docker/ /home/docker
重启服务
最初重启服务,并重启相干的 docker 容器
$ sudo systemctl enable docker
参考:https://gist.github.com/niles…