Docker数据目录迁移解决方案

前置工作

使用以下命令查询当前docker数据目录安装路径:

复制代码
docker info | grep "Docker Root Dir"

下文以 /home/rain/docker 这个路径作为要迁移的新 Docker 安装(存储)目录

迁移方案

方法一:软链接

停掉Docker服务:

复制代码
systemctl stop docker 

根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径(没有rsync命令时需安装rsync):

复制代码
rsync -avzP /var/lib/docker  /home/rain/

参数解释:

-a,归档模式,表示递归传输并保持文件属性。

-v,显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。

-P,显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。

-z, 传输时进行压缩提高效率。

备份数据目录

复制代码
mv /var/lib/docker  /var/lib/docker.bak

添加软链接

复制代码
ln -s /home/rain/docker /var/lib/

重新启动docker

复制代码
systemctl start docker 

启动 Docker 之后,Docker 写入的路径依然是 /var/lib/docker ,但是因为软链接的设置,实际已经是往新的目录写入了。至此,完成了 Docker 安装(存储)目录的迁移。

通过上述方法完成迁移之后,在确认 Docker 能正常工作之后,删除原目录备份数据:

复制代码
rm -rf /var/lib/docker.bak

方法二:修改默认存储路径

直接移出数据,并修改docker默认存放路径位置

停掉Docker服务:

复制代码
systemctl stop docker 

根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径(没有rsync命令时需安装rsync):

复制代码
rsync -avzP /var/lib/docker  /home/rain/
修改配置默认路径

在EXECStart后面添加--graph=/home/rain/docker/

复制代码
vim /usr/lib/systemd/system/docker.service  

ExecStart=/usr/bin/dockerd  --graph=/home/rain/docker

重启docker

复制代码
systemctl daemon-reload
systemctl start docker

查看docker数据存储目录

复制代码
[root@ ~]#: docker info | grep "Docker Root Dir"
Docker Root Dir: /home/rain/docker

确认之前的镜像是否还在

复制代码
docker images     

通过上述方法完成迁移之后,在确认 Docker 能正常工作之后,删除原目录数据:

复制代码
rm -rf /var/lib/docker

方法三:通过mount挂载的bind命令

备份 fstab文件

复制代码
cp /etc/fstab /etc/fstab.$(date +%Y-%m-%d)

停掉Docker服务:

复制代码
systemctl stop docker 

根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径(没有rsync命令时需安装rsync):

复制代码
rsync -avzP /var/lib/docker  /home/rain/

将备份保存

复制代码
mv /var/lib/docker/ /var/lib/docker.bak

通过mount挂载的bind命令将新位置挂载到老位置

复制代码
# 创建挂载点
mkdir /var/lib/docker
mount --bind /home/rain/docker /var/lib/docker
mount -a

创建开机自动挂载

复制代码
vim /etc/fstab
# 最后一行添加
/home/rain/docker /var/lib/docker                     none    bind            0 0
# 挂载
mount -a

如有必要重启服务器确认是否成功迁移

复制代码
reboot

通过上述方法完成迁移之后,在确认 Docker 能正常工作之后,删除原目录备份数据:

复制代码
rm -rf /var/lib/docker.bak
相关推荐
金刚猿10 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong11 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿11 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
金牌归来发现妻女流落街头15 小时前
【从SpringBoot到SpringCloud】
java·spring boot·spring cloud
70asunflower15 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
春日见16 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
xuhe216 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
7哥♡ۣۖᝰꫛꫀꪝۣℋ16 小时前
Spring-cloud\Eureka
java·spring·微服务·eureka
星火s漫天17 小时前
第一篇: 使用Docker部署flask项目(Flask + DB 容器化)
数据库·docker·flask
MonkeyKing_sunyuhua18 小时前
docker compose up -d --build 完全使用新代码打包的方法
docker·容器·eureka