昨天晚上,同事就向我反应169服务器因为空间不足导致容器都不能启动了,他们尝试删除了一些日志,可惜并没有释放多大的空间,无法解决问题,所以找我了。
由于我当时在给客户处理可视化大屏的问题给忘记了,今天早晨被问第二次的时候,决定验证一下我的想法:将容器的volume迁移到另一个挂载目录上。我在服务器上安装了portainer来管理Docker容器,所以想从portainer的角度解决问题,portainer默认使用的是/data/compose目录,我搜索了一下如何迁移,找到了一个复制/编辑容器的功能。由于迁移之后,portainer无法启动了,所以这里就没法给大家截图。好在这个功能也不能解决问题。
借用github仓库上的一张图,给大家看看portainer
那么这个问题是怎么解决的呢?
1、将/var/lib/docker 目录移动到 新的挂载目录。因为我是在有很多使用中的容器的情况下做操作,算是带有危险性的,所以仔细看了搜索到的文章,也根据建议直接使用了mv,而不是cp。
2、然后修改 docker.service ,使用 --graph=新的docker目录。
这里的步骤我是简单写的,为什么?因为你去搜索 /var/lib/docker移动 这样的关键词,是能够得到很多文章的,因为很多人都遇到过空间不足的问题。
不过!我照着做了之后,docker是可以启动的,但是docker ps -a 啥也找不到!容器啊,镜像啊什么的,都没有了!My God!
然后,有继续搜索迁移后找不到容器,有的文章说要将新的docker目录软链到/var/lib/docker,这一点在我之前的文章里也提到过,不过他说这种不推荐。既然已经出问题了,我就试试吧。
哈哈,做了软链后,问题解决了!
不过由于portainer需要/var/lib/docker/中的volume,所以启动不开了。