修改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
到此迁移就完成,测试容器中运行的服务是否可以正常访问即可