迁移docker工作目录

目的:为了解决 /var/lib/docker/overlay2 占用大 /var 分区空间不够问题

一、查看docker默认目录的方法
docker默认目录为/var/lib/docker,可以通过下面的方法查看

[root@harbor system]# docker info |grep "Docker Root Dir"
 Docker Root Dir: /var/lib/docker

二、停止docker服务并移动原有docker文件到新目录

systemctl stop docker.service
mkdir -p /opt/soft/
mv /var/lib/docker /opt/soft/

三、重新设置 Docker Root Dir

/opt/soft/docker
vi /usr/lib/systemd/system/docker.service
# 在 ExecStart=/usr/bin/dockerd 后追加 --data-root=/opt/soft/docker,注意如果本来后面有其他参数不要搞乱了
# 示例如下(后面其他参数是我个人配置别的使用的请忽略)
ExecStart=/usr/bin/dockerd --data-root=/opt/soft/docker -H fd:// --containerd=/run/containerd/containerd.sock

以前版本使用的参数是 --graph,新版本中已经弃用,更换了新的参数为 --data-root
还有一种设置docker主目录的方法,就是在文件 /etc/docker/daemon.json 中配置 { “data-root”: “/opt/soft/docker” }

四、重新加载配置启动服务

systemctl daemon-reload
systemctl start docker.service

然后可以重复第一步确认结果,即完成迁移。


在 deamon.json 中的更多配置示例参考,包含日志配置:

{
        #docker数据目录
        "data-root":"/opt/soft/docker",
        #docker存储的类型
        "storage-driver":"overlay2",
        #docker日志记录级别
        "log-level":"INFO",
        #docker日志驱动程序
        "log-driver":"json-file",
        #dockr驱动程序选项
        "log-opts": {
                "max-size": "10m",
                "max-file":"5"
        },
        #docker加速
        "registry-mirrors":["http://hub-mirror.c.163.com"]
}


附其他几个相关命令

# 类似于Linux上的df命令,用于查看Docker的磁盘使用情况
docker system df

# 用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
docker system prune

# 清理得更加彻底,可以将没有容器使用Docker镜像都删掉(请慎重操作)
docker system prune -a

# 列出所有虚悬(dangling)镜像,也就是 TAG 为 <none> 的
docker images -f dangling=true

(END)