Docker查询不到容器信息,但创建容器时显示容器名已被使用

前情提要

生产环境页面调用接口失败
前端容器正常运行
nginx配置正常
MySQL是安装在Linux上的访问正常
但是诡异的是找不到后端的容器
无论是通过

docker ps -a

还是通过可视化的工具查看
都无法检索到后端容器
Redis容器也没有
本身这个项目是由另外一个团队研发部署的
只是恰巧这次问题我有空帮忙看看

但是这个问题现象非常诡异
既然是同一个团队做的前后端分离
那么至少在部署方式上没必要用两种方式
应该全都是docker部署才对
一般来说如果情况极端的
容器挂了
那起码有个docker自带的容器自动重启功能
再不济最少会有个状态为停止的容器
但是问题就出在没找到后端容器

那没有后端容器就应当创建容器
但是这个项目本身我未经手过
不清楚是否有一些启动参数等配置
所以还是找来了原团队人员
他也按部就班在可视化工具上填写容器启动配置
容器名、镜像、启动参数、挂载目录等
但是到最后一步启动容器的时候报错了

The container name "xxx" is already in use by container "xxxxxxxxxxx...".

这个时候就令人困惑了
没有找到这个容器
但是创建的时候却说这个容器已经存在了
他重新填写并检查了一遍docker启动配置
都没有问题
再次启动容器仍然是这个报错信息
于是他决定创建Redis容器试试
结果也一样

问题分析

跟我们现场实施的同事详细了解了一下事件原因
得到的信息是
有个软件一直输出日志却不清理
导致服务器磁盘满了之后应用运行异常
之前有给用户做过培训
教他们清理服务器日志后重启服务器
但是这次页面调用接口还是存在失败的现象
所以用户找到了我们来处理

那么根据这个场景
大概推测docker并没有正常运行
可能还是由于某些原因
导致容器检索不到

问题处理

原团队人员也意识到了这一点
着手重启docker应用

systemctl restart docker

重启好之后我们再次查询容器

docker ps -a

那些之前没看到的后端容器和Redis容器都能查到了
也显示在运行中
本次问题就此解决

原因分析

虽然服务已经正常运行了
但是问题的原因仍需要排查
于是乎我决定查一下docker应用运行日志
看看能否查到什么蛛丝马迹
通过journalctl进行查询
下面这个时间大家有需要根据实际情况自行调整

journalctl -u docker.service --since "2025-05-02" --no-pager

得到了小两千行的日志输出
幸运的是我在比较靠前的日志内容中已经找到了想要的记录
摘录如下

May 02 16:20:00 localhost.localdomain dockerd[1743]: time="2025-05-02T16:20:00.560585712+08:00" level=error msg="failed to register container" container=8dcb417af9144cad547c76e293ea27f29477d649fc9cc377868eaa21f79391a5 error="open /var/lib/docker/containers/8dcb417af9144cad547c76e293ea27f29477d649fc9cc377868eaa21f79391a5/.tmp-config.v2.json3332533831: no space left on device"
May 02 16:20:00 localhost.localdomain dockerd[1743]: time="2025-05-02T16:20:00.560844968+08:00" level=error msg="failed to register container" container=d6254be9dd95680c42ce3b87a9670073b2b79ebb94d3725c2108d9f1ddfbdb6b error="open /var/lib/docker/containers/d6254be9dd95680c42ce3b87a9670073b2b79ebb94d3725c2108d9f1ddfbdb6b/.tmp-config.v2.json1781842918: no space left on device"
May 02 16:20:00 localhost.localdomain dockerd[1743]: time="2025-05-02T16:20:00.577654994+08:00" level=error msg="failed to register container" container=05dbb52eaf76ed53b0fc5ec769fc9b5ab58d2731d3dbe6754f5bc103a6455164 error="open /var/lib/docker/containers/05dbb52eaf76ed53b0fc5ec769fc9b5ab58d2731d3dbe6754f5bc103a6455164/.tmp-hostconfig.json1358306723: no space left on device"

docker容器注册失败的原因是 no space left on device

但是我们重启了docker应用就正常了
说明docker上次启动的时候
服务器上的磁盘空间仍然非常有限
那么只能推测是用户在处理日志占满磁盘的问题时
可能是先重启服务器再清理日志的
导致应用启动时出现了异常

折腾了几个小时的我们最终得出结论
应该当初让用户再重启一次服务器就一切正常了
这类问题就应该升级软件而不是让用户来操作服务器
因为用户可能本身不了解各种命令
又或者由于各种原因做命令操作时并未按预期执行
导致了如今的状况

本次问题比较少见特此记录备忘

posted @ 2025-05-07 12:56  PlaidShirtWholesaler  阅读(30)  评论(0)    收藏  举报