修改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
到此迁移就完成,测试容器中运行的服务是否可以正常访问即可
分类:
docker
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器