在运行 Docker 容器的 Linux 系统中,默认情况下 Docker 会将所有数据存储在 /var/lib/docker 目录下。随着时间的推移,这个目录可能会占用大量空间,尤其是当你拉取了许多镜像或创建了多个容器时。为了节省系统盘空间,你可以将 Docker 的数据存储位置迁移到另一块更大的磁盘(如数据盘)。

本文将简单介绍如何将 Docker 数据迁移到数据盘,并确保 Docker 在重启后仍能正常工作。

1. 停止 Docker 服务

在进行任何迁移操作之前,首先需要停止 Docker 服务,以确保数据的安全迁移。

$ sudo systemctl stop docker

2. 创建新的数据存储目录

接下来,我们需要选择一个新的目录来存储 Docker 数据。例如,如果你的数据盘已经挂载在 /mnt/data,你可以在该路径下创建一个新的目录用来存储 Docker 的数据:

$ sudo mkdir -p /mnt/data/docker

确保新目录已经创建,并且准备好接收 Docker 的数据。

3. 修改 Docker 配置文件

默认情况下,Docker 将所有数据存储在 /var/lib/docker 目录中。为了将数据存储路径修改为新的目录,你需要编辑 Docker 的配置文件 /etc/docker/daemon.json

  1. 打开配置文件:

    $ sudo vim /etc/docker/daemon.json
    
  2. 如果文件不存在,可以创建它。然后,添加或修改 data-root 配置项,指向新的目录:

    {
      "data-root": "/mnt/data/docker"
    }
    

    data-root 选项告诉 Docker 将所有数据存储在 /mnt/data/docker 目录下。保存并退出编辑器。

4. 迁移 Docker 数据

现在,我们需要将 Docker 数据从默认的 /var/lib/docker 目录迁移到新的目录 /mnt/data/docker

  1. 使用 rsync 命令将原目录的数据复制到新目录:

    $ sudo rsync -aP /var/lib/docker/ /mnt/data/docker/
    

    这里,-a 选项保持文件的权限和符号链接,-P 选项确保文件在传输过程中显示进度。

  2. 确保新目录的权限正确,使 Docker 可以访问和写入:

    $ sudo chown -R root:root /mnt/data/docker
    $ sudo chmod -R 700 /mnt/data/docker
    

5. 重启 Docker 服务

完成数据迁移后,启动 Docker 服务,并确保它能够使用新的数据存储路径:

$ sudo systemctl start docker

6. 验证 Docker 是否正常运行

运行以下命令,检查 Docker 是否正常工作,并确认数据目录已成功迁移:

$ sudo docker info

在输出中,查找 Docker Root Dir 字段,确认它指向了新的数据目录(如 /mnt/data/docker)。

7. 可选:删除旧的数据目录

如果一切运行正常,你可以删除旧的 Docker 数据目录(/var/lib/docker)以释放空间:

$ sudo rm -rf /var/lib/docker

注意:在删除旧数据目录之前,请确保 Docker 已经成功运行并且新目录中有完整的数据。


孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
腾讯云开发者社区:孟斯特