前言

Docker 安装的东西多了或者目录分配大小未提前规划好,就容易出现磁盘空间不足的问题,可以采用软链接的方式迁移数据目录空间。


为什么使用符号链接?

创建符号链接的好处在于,你无需修改 Docker 配置文件 /etc/docker/daemon.json。符号链接能够将 Docker 默认查找的数据目录路径 /var/lib/docker 指向新的位置,从而让 Docker 无缝找到其数据目录。

迁移步骤

按照以下步骤操作,即可成功迁移 Docker 数据目录:

  1. 停止 Docker 服务

    首先,确保停止 Docker 服务,以避免在复制数据时出现文件被占用的情况。

    1
    sudo systemctl stop docker
  2. 复制 Docker 数据目录

    使用 cp 命令复制 /var/lib/docker 目录到新的位置 /home/app 下。-a 选项表示归档模式,会保留文件的所有属性和权限,-u 表示仅在目标文件不存在或源文件更新时进行复制。

    1
    sudo cp -au /var/lib/docker /home/app
  3. 重命名原始 Docker 目录

    为了确保数据安全,可以将原始的 Docker 目录重命名,而不是直接删除。这是一个备份步骤,以防出现意外情况。

    1
    sudo mv /var/lib/docker /var/lib/docker.old
  4. 创建符号链接

    创建一个符号链接,将 /var/lib/docker 指向新的数据目录 /home/app/docker。这样,Docker 会继续在 /var/lib/docker 路径下查找数据目录,但实际上数据已经被存储在新的位置。

    1
    sudo ln -s /home/app/docker /var/lib/docker
  5. 启动 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 将使用新的数据目录来存储数据。
请注意,在修改 Docker 数据目录时,需要确保新的数据目录已存在且有足够的磁盘空间可供使用。