前言

​ docker所在服务器,运行了一段时间后,发现服务器磁盘目录快不够用了。通过du -h --max-depth=1 / 逐级目录排查,发现/var/lib/docker目录文件过大。通过以下方法,解决该问题。

转移数据修改docker默认存储位置

有多种方式修改docker默认存储位置。
最好是在docker安装完后,第一时间修改docker默认存储位置为其他大目录或者磁盘中。规避迁移数据过程中造成的风险。

停止docker服务

1
systemctl stop docker

创建新的docker目录

执行命令df -h,找一个大的磁盘

找到后(我这里找到的是/home)/home目录下面建了/home/modules/docker/lib目录

1
mkdir -p /home/modules/docker/lib

迁移

/var/lib/docker目录下面的文件到/home/modules/docker/lib

迁移后的完成docker路径:/home/modules/docker/lib/docker

1
rsync -avz /var/lib/docker/ /home/modules/docker/lib/

配置

修改/etc/systemd/system/docker.service.d/devicemapper.conf

查看/etc/systemd/system/docker.service.d目录及devicemapper.conf是否存在。如果不存在,就新建

1
2
3
mkdir -p /etc/systemd/system/docker.service.d/

vi /etc/systemd/system/docker.service.d/devicemapper.conf

devicemapper.conf添加如下内容:

1
2
3
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/home/modules/docker/lib/docker

重启docker

1
2
3
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

确认Docker Root Dir修改是否已经生效

1
2
3
4
5
6
7
[root@user]# docker info
...
Docker Root Dir: /home/modules/docker/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
...

启动成功后,再确认之前的镜像是否还在

1
[root@user]# docker images

确定容器没问题后删除/var/lib/docker/目录中的文件

1
rm -rf /var/lib/docker