Docker更换容器存储路径Root-dir

先BB两句

某一天
发现公司的confluence服务器的docker容器路径默认存储在/var/lib/docker/下
并没有利用到挂载的data云盘,导致根目录磁盘一直比较爆满
之前建confluence的程序猿只设置了volume
容器内的日志会挂载到data盘,但运行着的容器日志和volume没关系的

Docker更换容器存储路径Root-dir_第1张图片

迁移容器(删库跑路)的准备工作

mkdir   -p   /data/docker   
systemctl   stop docker

先创建需要切换的root dir目录 然后暂停docker服务

/bin/cp   -R   /var/lib/docker/*   /data/docker/ 
/etc/docker/daemon.json

根据docker的版本指定"data-root",低版本的写"graph",注意每一行之间有逗号
/etc/docker/daemon.json

systemctl daemon-reload 
systemctl restart  docker 

然后查看 Root Dir是否切换

 docker info |grep -i root

特别注意事项!

迁移工作时如果少了步骤3),会导致重启docker以后镜像和容器清空,

是因为修改了docker的容器镜像路径,导致docker服务找不到而已,并没有真正的删除

只需要重新执行步骤3),然后重启docker就可以了

Docker更换容器存储路径Root-dir_第2张图片

其他坑爹事项

在自己虚拟机测试的时候,路径切换成功,
但是spug的容器起不来了,切回路径又可以起来,
然后测试了其他ubuntu,redis的官方容器镜像,
用各种方法启容器,发现切路径后容器是正常的,
估计是spug这个容器有点兼容性的问题,必须要用默认的路径

systemctl daemon-reload
systemctl restart  docker

到此刻还没有任何问题,
结果重启虚拟机,容器就完全不行了,
不管是以前的容器,和以前一模一样的启动方式的新容器, 一直在报Exited (139) 3

还有怎么重启docker服务都没用,

docker log 容器ID 还看不到任何日志,判断是docker本身的问题

systemctl status docker -l 看日志 failed to unmount secrets: invalid argument ,
估计是镜像挂载问题,又重新拉镜像或者下不同镜像还是不行

结果搞到最后。。

竟然是因为重启电脑后开启了selinux。。。。。?!淦
Docker更换容器存储路径Root-dir_第3张图片

setenforce 0临时关闭,搞定

Docker更换容器存储路径Root-dir_第4张图片

你可能感兴趣的:(docker,linux,运维,centos)