使用符号链接迁移 Docker 数据存储目录
前言
Docker 镜像、容器和卷越来越多时,如果 /var/lib/docker 所在分区规划不足,就容易出现磁盘空间不足。更标准的方式是通过 /etc/docker/daemon.json 配置 data-root,本文记录另一种使用符号链接迁移数据目录的方案。
为什么使用符号链接?
创建符号链接的好处在于,可以不修改 Docker 配置文件 /etc/docker/daemon.json。符号链接能够将 Docker 默认查找的数据目录路径 /var/lib/docker 指向新的位置,从而让 Docker 找到迁移后的数据目录。
需要注意的是,迁移前必须停止 Docker 服务,并保留原目录备份。迁移后确认容器、镜像和卷都正常后,再清理旧目录。
迁移步骤
按照以下步骤操作,即可成功迁移 Docker 数据目录:
停止 Docker 服务
首先,确保停止 Docker 服务,以避免在复制数据时出现文件被占用的情况。
1
sudo systemctl stop docker
复制 Docker 数据目录
使用
cp命令复制/var/lib/docker目录到新的位置/home/app下。-a选项表示归档模式,会保留文件的所有属性和权限,-u表示仅在目标文件不存在或源文件更新时进行复制。1
sudo cp -au /var/lib/docker /home/app
重命名原始 Docker 目录
为了确保数据安全,可以将原始的 Docker 目录重命名,而不是直接删除。这是一个备份步骤,以防出现意外情况。
1
sudo mv /var/lib/docker /var/lib/docker.old
创建符号链接
创建一个符号链接,将
/var/lib/docker指向新的数据目录/home/app/docker。这样,Docker 会继续在/var/lib/docker路径下查找数据目录,但实际上数据已经被存储在新的位置。1
sudo ln -s /home/app/docker /var/lib/docker
启动 Docker 服务
最后,重新启动 Docker 服务,使所有更改生效。
1
sudo systemctl start docker
验证迁移
迁移完成后,你可以验证 Docker 是否在新的位置正常运行。运行以下命令,查看 Docker 根目录:
1 | sudo docker info | grep "Docker Root Dir" |
输出应显示新的 Docker 根目录 /home/app/docker。
总结
通过创建符号链接,你可以将 Docker 数据目录迁移到新的位置,而无需修改 Docker 配置文件。这种方法简单,但仍要确保 Docker 已停止、数据已完整复制,并在验证完成前保留旧目录。
迁移完成后,Docker 将使用新的数据目录存储数据。请确保新的数据目录已存在,并且有足够的磁盘空间。






