Docker 容器起不来?先查这三处,别急着删容器重建

举报
yd_283162409 发表于 2026/10/26 09:11:24 2026/10/26
【摘要】 先说结论容器起不来,十有八九不是镜像坏了,而是启动条件没满足。按下面三处顺序查,大部分问题五分钟就能定位,不用一上来就删容器重建。第一处:看容器到底死在哪一步先用 docker ps -a 看状态:Exited (1) 多半是应用自身报错,Exited (137) 常常是被 OOM kill,Restarting 说明启动命令一直在失败重试。接着用 docker logs --tail 10...

先说结论

容器起不来,十有八九不是镜像坏了,而是启动条件没满足。按下面三处顺序查,大部分问题五分钟就能定位,不用一上来就删容器重建。

第一处:看容器到底死在哪一步

先用 docker ps -a 看状态:Exited (1) 多半是应用自身报错,Exited (137) 常常是被 OOM kill,Restarting 说明启动命令一直在失败重试。接着用 docker logs --tail 100 容器名,只看最后几十行报错,别从头翻。

日志里常见的三类问题:启动命令写了相对路径、配置文件挂载后路径变了、必需的环境变量没传。看到 no such file、permission denied、connection refused,基本都指向这三类。

第二处:端口和卷挂载冲突

端口被占时 Docker 会直接报错,提示 port is already allocated。这时先用 ss -tlnp 查占用者,再决定换端口还是停掉旧进程,不要反复删容器重建,那解决不了占用问题。

卷挂载要注意宿主机目录权限:容器内跑的是非 root 用户时,挂载进来的目录属主不对就会写不进去,日志同样表现为 permission denied。用 docker inspect 看 Mounts,确认源路径和读写模式是不是你以为的那个。

第三处:资源和镜像本身

磁盘满了镜像解不开、内存不够被系统杀掉,都会表现为容器莫名退出。用 docker system df 看磁盘占用,用 dmesg 查有没有 OOM 记录。清悬空镜像能腾地方,但别在生产机上无脑加 -a 全清。

如果怀疑镜像本身有问题,用 docker run --rm -it 镜像 sh 进去手动跑一遍启动命令:能复现就是镜像或配置问题,复现不了就往宿主机环境上查。

一个顺手的排查顺序

ps -a 看状态,logs 看尾部报错,inspect 看端口和挂载,最后查磁盘和内存。按这个顺序走,基本不用重建容器;真要重建,先把日志和配置拷出来再删,留个现场方便回头复盘。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。