修改Docker镜像和容器的默认存储目录(迁移原有数据)

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
docker ps -a

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

posted @ 2024-10-12 16:38  浪迹天涯的派大星  阅读(435)  评论(0编辑  收藏  举报