- 1. 停止 Docker 服务
- 2. 创建新的数据存储目录
- 3. 修改 Docker 配置文件
- 4. 迁移 Docker 数据
- 5. 重启 Docker 服务
- 6. 验证 Docker 是否正常运行
- 7. 可选:删除旧的数据目录
在运行 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
。
-
打开配置文件:
$ sudo vim /etc/docker/daemon.json
-
如果文件不存在,可以创建它。然后,添加或修改
data-root
配置项,指向新的目录:{ "data-root": "/mnt/data/docker" }
data-root
选项告诉 Docker 将所有数据存储在/mnt/data/docker
目录下。保存并退出编辑器。
4. 迁移 Docker 数据
现在,我们需要将 Docker 数据从默认的 /var/lib/docker
目录迁移到新的目录 /mnt/data/docker
。
-
使用
rsync
命令将原目录的数据复制到新目录:$ sudo rsync -aP /var/lib/docker/ /mnt/data/docker/
这里,
-a
选项保持文件的权限和符号链接,-P
选项确保文件在传输过程中显示进度。 -
确保新目录的权限正确,使 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: 恋水无意
腾讯云开发者社区:孟斯特
—