可调整Docker镜像存储路径至大容量分区,方法有三:一、修改daemon.json并迁移数据;二、卸载重装并指定data-root;三、用bind mount挂载新路径。

如果您在宝塔面板中运行 Docker,但默认镜像存储路径位于系统根目录(/var/lib/docker),则随着镜像和容器不断增多,根分区可能被快速占满。以下是调整 Docker 镜像存储路径以避免撑爆根目录的操作步骤:
一、停止 Docker 服务并迁移现有数据
该方法通过修改 Docker 的 daemon.json 配置文件,将镜像存储目录指向容量更大的挂载点,并迁移已有数据,确保历史镜像不丢失。
1、执行 systemctl stop docker 停止 Docker 服务。
2、创建目标目录,例如 /data/docker(需确保 /data 分区有足够空间)。
3、使用 rsync -avz /var/lib/docker/ /data/docker/ 完整同步原数据(注意末尾斜杠)。
4、备份原目录:mv /var/lib/docker /var/lib/docker.bak。
5、创建软链接:ln -s /data/docker /var/lib/docker。
6、编辑 /etc/docker/daemon.json,添加 "data-root": "/data/docker" 字段(若文件不存在则新建)。
7、执行 systemctl start docker 启动服务并验证 docker info | grep "Docker Root Dir" 输出是否为新路径。
二、卸载重装 Docker 并指定根目录
该方法适用于尚未部署关键容器的环境,通过重新安装 Docker 时直接指定 data-root,跳过数据迁移环节,规避同步遗漏风险。
1、卸载当前 Docker:yum remove docker-ce docker-ce-cli containerd.io -y(CentOS)或 apt-get purge docker-ce docker-ce-cli containerd.io -y(Ubuntu/Debian)。
2、创建目标目录:mkdir -p /data/docker,并设置权限:chown root:root /data/docker && chmod 700 /data/docker。
3、创建配置文件:echo '{"data-root": "/data/docker"}' > /etc/docker/daemon.json。
4、重新安装 Docker(按宝塔支持的官方方式,如使用脚本或包管理器)。
5、启动服务:systemctl daemon-reload && systemctl start docker。
6、确认生效:docker info | grep "Docker Root Dir" 应显示 /data/docker。
三、使用 bind mount 方式挂载新路径
该方法不修改 Docker 默认行为,而是通过 Linux 的 bind mount 机制,将 /var/lib/docker 实际挂载到外部大容量分区,对 Docker 完全透明,兼容性最强。
1、确保目标分区已挂载,例如 /dev/sdb1 已挂载至 /data。
2、停止 Docker:systemctl stop docker。
3、清空原目录:rm -rf /var/lib/docker/*(仅当确认已无重要数据或已完成备份)。
4、执行 bind mount:mount --bind /data/docker /var/lib/docker。
5、写入 fstab 持久化:echo "/data/docker /var/lib/docker none bind 0 0" >> /etc/fstab。
6、重新加载 fstab:mount -a,再启动 Docker:systemctl start docker。









