⚡ OpsAILab.cc
🔒

OpsAI 隐私承诺

· 本工具所有计算均在您的浏览器本地完成,文件与数据绝不会上传至任何云端服务器,断网亦可使用

Docker Compose 排错速查

按症状 → 线索 → 修复的链路组织。先跑这条万能的看日志命令,再对照下面找你的场景: docker compose logs --tail 50 服务名

你的症状是哪一个?

🩹 通用急救包(80% 的问题先看这四个)

看完整日志

docker compose logs -f --tail 100

看容器状态和退出码

docker compose ps -a && docker inspect <容器名> --format "{{.State.ExitCode}} {{.State.Error}}"

全部重来(缓存是万恶之源)

docker compose down && docker compose build --no-cache && docker compose up -d

验证 compose 文件语法

docker compose config

什么时候用得上

  • 本机 docker compose up 起不来,日志只有一行 exit 1,不知道从哪查起
  • 线上容器每 30 秒重启一次,要根据退出码判断是应用报错还是被 OOM 杀掉
  • 换服务器后容器之间连不上,不确定该写 localhost 还是 compose 里的服务名

常见问题

exit code 137 一定是内存不够吗?

不一定。137 等于 128 加 9,表示进程收到 SIGKILL 信号,多数由内存不足触发,也可能是有人手动执行 docker kill。用 inspect 看 OOMKilled 是不是 true,才算实锤,别一看到 137 就加内存。

depends_on 能保证数据库先起来吗?

只能保证启动顺序,不保证数据库已经能接连接。要等就加 healthcheck,再写 condition: service_healthy,否则应用比数据库先就绪,照样启动即退出。

镜像一直 i/o timeout,换加速器就行吗?

多数情况是。改 /etc/docker/daemon.json 里的 registry-mirrors 后要 restart docker;拉官方镜像还得在镜像名前面补 library 前缀,少这一层照样超时,很多人卡在这里。

觉得好用?请老架构师喝杯咖啡 ☕ 加微信 qcwindwin 聊业务也可以