docker数据目录迁移

场景介绍

 最近公司的项目出现无响应的问题,排查后发现是磁盘已满导致的,df -h 显示已占用达到了100%。幸好服务器还有一块数据盘,之前已作为mysql的数据目录,现在打算再把docker也迁移至数据盘。
 在这里和大家分享下经历,难免会有些许错误,请各位看官不吝赐教。

方案介绍

 考虑了下,决定采用软连接的方式解决,好处是能保证docker原有配置的情况下将数据目录迁移至数据盘,不修改配置文件也意味着降低误操作的概率。更好的是相比于直接挂载磁盘方案,一个数据盘可以为多个应用服务,管理十分方便,而且实际操作只需几条命令即可。
 理论上任何软件的数据迁移都可以用软连接的方式解决。在这之前的mysql也是使用软连接解决的。

方案实施

 默认情况下Docker的存放位置为:/var/lib/docker
可以通过下面命令查看具体位置:

docker info | grep "Docker Root Dir"
  1. 首先停掉Docker服务:
systemctl stop docker 
  1. 然后根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径:
mv /var/lib/docker /home/docker

 必须使用mv命令,cp会丢失权限信息,可能会导致意想不到的bug。
3. 加入软连接

ln -s /home/docker /var/lib/docker

 先看下/home/docker下的目录,确定挂载成功在启动docker,即使挂载有问题,无碍,也可停止停止docker后重新操作
4. 启动docker

systemctl start docker 

 这时候启动Docker时发现存储目录依旧是/var/lib/docker,但是实际上是存储在数据盘的。

原文地址:https://www.cnblogs.com/dancesir/p/14266539.html