修改Docker镜像和容器的默认存储目录(迁移原有数据)【测试成功、个别容器启动失败】

艺帆风顺 发布于 2025-04-02 14 次阅读


docker根目录占用的磁盘空间太大,将其迁移到新的磁盘上,后续的镜像和容器存储空间将在新的磁盘上,文章方法适用于docker版本 >= V17.05 ,详情见官方文档:Engine v17.05 | Docker Docs

1、查看docker现有的存储目录

docker info

在打印的信息中查看Docker Root Dir,即为当前的根目录,默认是/var/lib/docker,如下图:

2、查看docker的service位置

systemctl status docker.service

docker.service位置如下图所示,后面的步骤需要修改这个文件中的内容。

3、停止docker.service

systemctl stop docker.service

4、复制现有存储目录到新的存放位置

选择一个磁盘空间足够的目录,用来作为docker新的根目录,将原有根目录的文件全部复制过来,假设新的存放目录是:/data/docker

现有存储目录由第一步可以知道是:/var/lib/docker,将里面的所有文件复制到新目录下,如下:

cp-r /var/lib/docker/* /data/docker

注:新的存放文件目录,root账号需要有读写权限,可以直接放开所有授权  chmod -R 777 /data/docker

5、修改根目录的路径

如下有两种方式,使用任意一种即可。

  • 修改docker.service

在ExecStart=/usr/bin/dockerd后面增加--data-root=/data/docker,中间空格隔开,/data/docker即为第4步中复制的新的存放目录,如果后面存在其他配置,不要修改,如下所示:

  • 修改daemon.json

也可以修改/etc/docker/daemon.json来实现(如果damon.json文件不存在,可以新增一个文件),示例如下:

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

注:上面两种方式最好不要同时使用,如果配置的根目录发生冲突,会导致docker服务启动失败。启动失败可以通过命令journalctl -u docker.service查看详细日志。

6、重启docker服务

systemctl daemon-reload
systemctl restart docker.service

7、验证查看原有的镜像和容器

docker images
dockerps-a

到此迁移就完成,测试容器中运行的服务是否可以正常访问即可

    版权声明:本文内容来自博客园:浪迹天涯的派大星,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:https://www.cnblogs.com/zhaodalei/p/18460800如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。