
Docker默认根目录是/var/lib/docker会占用服务器根目录的磁盘空间当根目录磁盘空间较小时可能会导致磁盘占用达到100%为了解决这个问题我们可以更换Docker的根目录到别的目录从而释放根目录的空间下面简单介绍一下更换步骤一、挂载一块新的硬盘新加一块硬盘如/dev/sdb我们将其挂载到/data目录。fdisk/dev/sdb# 依次输入# n# 一直默认enter# t# 8e# wmkdir/datablkid /dev/sdb1# /dev/sdb1: UUID9edcba8b-4502-4ca3-99ee-a03841fd6a4d BLOCK_SIZE4096 TYPEext4 PARTUUIDa504f838-01vi/etc/fstab在fstab中加入一行, UUID是上述命令获取的UUIDUUIDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults02systemctl daemon-reloadmount-adf-Th如果能看到有/data目录说明挂载成功rootguest-VMware-Virtual-Platform:~# df -Th文件系统 类型 大小 已用 可用 已用% 挂载点 tmpfs tmpfs3.2G3.6M3.2G1% /run /dev/sda2 ext4 98G 65G 29G70% / tmpfs tmpfs 16G 725M 15G5% /dev/shm tmpfs tmpfs5.0M05.0M0% /run/lock tmpfs tmpfs3.2G 100K3.2G1% /run/user/120 tmpfs tmpfs3.2G 360K3.2G1% /run/user/0 /dev/sdb1 ext4 196G 30G 157G16% /data overlay overlay 196G 30G 157G16% /data/docker/overlay2/6cd60c7d20f6ec9f94c96d5dd4eb3d2741b1eaf83cd0db700acc5a41d36bccac/merged二、查看Docker镜像存储路径1. 查看Docker根目录镜像、容器、卷全存在这里dockerinfo|grepDocker Root Dir默认输出Docker Root Dir: /var/lib/docker镜像分层文件真实路径/var/lib/docker/overlay2/镜像元数据在/var/lib/docker/image/三、完整迁移Docker到/data前提/data已经挂载好sdb1空间充足步骤1停止Docker必须防止数据损坏systemctl stop docker.socket systemctl stopdocker步骤2创建新目录完整同步原有镜像数据保留权限mkdir-p/data/docker# 同步所有docker数据镜像/容器/卷全部迁移rsync-avzP/var/lib/docker/ /data/docker/-a保留权限、属主、软链接-P显示进度、支持断点续传步骤3修改Docker配置指定新存储路径vi/etc/docker/daemon.json写入内容不存在则新建{data-root:/data/docker}若已有镜像加速等配置逗号分隔{data-root:/data/docker,registry-mirrors:[https://xxx.mirror.aliyuncs.com]}步骤4重载配置、启动Dockersystemctl daemon-reload systemctl start docker.socket systemctl startdocker步骤5验证是否迁移成功# 查看根目录是否变成/data/dockerdockerinfo|grepDocker Root Dir# 查看镜像列表原有镜像全部存在dockerimages步骤6确认无异常后备份旧目录可后续删除mv/var/lib/docker /var/lib/docker.bak# 稳定运行几天再删备份# rm -rf /var/lib/docker.bak经过上述步骤就可以将完整的docker数据迁移到了另一个目录释放根目录空间。