docker数据目录迁移
场景介绍
最近公司的项目出现无响应的问题,排查后发现是磁盘已满导致的,df -h 显示已占用达到了100%。幸好服务器还有一块数据盘,之前已作为mysql的数据目录,现在打算再把docker也迁移至数据盘。
在这里和大家分享下经历,难免会有些许错误,请各位看官不吝赐教。
方案介绍
考虑了下,决定采用软连接的方式解决,好处是能保证docker原有配置的情况下将数据目录迁移至数据盘,不修改配置文件也意味着降低误操作的概率。更好的是相比于直接挂载磁盘方案,一个数据盘可以为多个应用服务,管理十分方便,而且实际操作只需几条命令即可。
理论上任何软件的数据迁移都可以用软连接的方式解决。在这之前的mysql也是使用软连接解决的。
方案实施
默认情况下Docker的存放位置为:/var/lib/docker
可以通过下面命令查看具体位置:
docker info | grep "Docker Root Dir"
- 首先停掉Docker服务:
systemctl stop docker
- 然后根据上面查到的路径,移动整个/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,但是实际上是存储在数据盘的。