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

  • Post author:
  • Post category:其他




先BB两句

某一天

发现公司的confluence服务器的docker容器路径默认存储在/var/lib/docker/下

并没有利用到挂载的data云盘,导致根目录磁盘一直比较爆满

之前建confluence的程序猿只设置了volume

容器内的日志会挂载到data盘,但运行着的容器日志和volume没关系的



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

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就可以了



其他坑爹事项

在自己虚拟机测试的时候,路径切换成功,

但是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。。。。。?!淦

在这里插入图片描述


setenforce 0

临时关闭,搞定



版权声明:本文为weixin_44404384原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。