Docker之存储目录迁移

0x01 引言

Docker 默认的存储目录是在 /var/lib/docker,而/var 目录一般都不会单独分区,经过长时间的使用,会使分区越来越不够用,建议将存储目录修改到计划好的目录下,如 /data/docker

0x02 正文

存储目录的结构

1
2
$ ls /var/lib/docker/
buildkit containers image network overlay2 plugins runtimes swarm tmp trust volumes

查看Docker自身磁盘使用情况

1
2
3
4
5
6
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 141.5MB 0B (0%)
Containers 1 0 1.093kB 1.093kB (100%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B

其中 Containers 是用来存储容器信息,以容器ID区分


清理磁盘,删除关闭的容器、无用的数据卷和网络,以及即无tag的镜像

1
docker system prune

迁移存储目录

关闭Docker服务

1
systemctl stop docker

创建所需目录

1
mkdir -p /data/docker

迁移

1
mv -a /var/lib/docker /data/

修改服务文件,在 ExecStart 加上--graph=/data/docker

1
sed -i 's/containerd.sock/containerd.sock --graph=\/data\/docker/' /usr/lib/systemd/system/docker.service

重新启动

1
2
systemctl daemon-reload
systemctl start docker

确认信息

1
2
$ docker info | grep 'Docker Root Dir'
Docker Root Dir: /var/lib/docker