docker Roadmap

Docker / Compose 排障专题

Docker / Compose 排障专题:聚合容器端口映射不通、镜像拉取失败、Compose 配置不生效、磁盘清理与孤儿镜像、容器网络与 DNS、volume 权限等常见问题的完整排障流程与命令模板。

容器问题不要只盯着容器内部,宿主机端口和防火墙、镜像 registry 与代理、network 与 DNS、volume 权限都要一起看,Compose 项目额外看 docker compose config 展开结果和 healthcheck 依赖。

dockercomposecontainerimageport
排障 / 命令13
精选入口4
工具 / 速查4
最近更新2026-07-01

Troubleshooting Path

推荐排障路线图

提交问题 →
  1. 01

    先确认容器状态和日志

    用 docker ps -a、docker logs、docker inspect 判断是否启动、重启循环或退出。

  2. 02

    再核对端口和监听地址

    检查 ports 映射、容器内监听 0.0.0.0 还是 127.0.0.1,以及宿主机防火墙。

  3. 03

    继续检查镜像和网络

    镜像拉取失败看 registry、代理、架构;容器互访失败看 network 和 DNS。

  4. 04

    最后检查卷和 Compose 配置

    验证 volume 权限、环境变量、depends_on、healthcheck 和 docker compose config 输出。

Before You Change

执行前检查

  • 先执行 docker compose config 校验 YAML
  • 生产机慎用 docker system prune -a
  • volume 路径修改前确认数据备份
  • 端口不通时同时查安全组和宿主机防火墙

Start Here

优先阅读

Latest Updates

最近更新

All Runbooks

全部相关内容

排障

Docker Compose 容器反复重启排查

Docker Compose 容器一直 Restarting 时,用 docker compose ps 看退出码和重启次数,读取失败服务的历史日志、docker compose config 展开环境变量与端口卷,常见根因是启动命令失败、环境变量缺失、端口冲突或 depends_on 未等依赖 ready。

dockercomposerestart
排障

Docker 镜像清理与瘦身

Docker 镜像和构建缓存占满磁盘时,用 docker system df 查看整体占用,按 dangling 中间层、未使用镜像、构建缓存的顺序渐进清理,避免直接 docker system prune -a 误删仍被停止容器引用的镜像。

dockerimagecleanup
排障

Docker 镜像拉取失败排查:超时、证书和架构不匹配

docker pull 出现 TLS handshake timeout、manifest unknown、no matching manifest 或 x509 unknown authority 时,先按错误文本区分网络、Registry 认证、镜像 tag 不存在或 CPU 架构不匹配,再针对性配置代理、镜像源、docker login 或私有仓库 CA。

dockerimageregistry
排障

Docker 容器网络不通排查

Docker 容器之间 ping/curl 不通、DNS 无法解析容器名或访问不了宿主机服务时,用 docker network inspect 查看网络成员,确认容器是否在同一自定义 network,Docker 内置 DNS 只在自定义网络生效,宿主机访问用 host.docker.internal。

dockernetworkbridge
排障

Docker 端口映射后外部访问不了怎么排查

Docker 用 -p 映射端口后从宿主机或外部访问不通时,先确认 docker ps 是否显示 0.0.0.0:host->container 映射,再进容器 ss -lntp 检查应用是否监听 0.0.0.0 而非 127.0.0.1,最后排查 firewalld/ufw/云安全组。

docker端口映射防火墙
排障

Docker Volume 权限拒绝排查

Docker 挂载卷后容器进程写文件报 permission denied 时,用 docker exec id 查看容器运行用户 UID,对比宿主机目录 owner 和 mode,再决定是 chown 目录还是通过 --user、Dockerfile USER 或 SELinux :Z 调整容器用户匹配宿主机权限。

dockervolumepermission
排障

Linux 磁盘占满排查与安全清理

Linux 报 No space left on device 或磁盘占满时,用 df -hT 定位具体挂载点,du --max-depth 逐层找大目录,journalctl --disk-usage 和 docker system df 排查日志/镜像占用,lsof +L1 找已删除但仍被进程持有的文件释放空间。

linuxdiskdu
排障

Linux OOM Killer 与内存不足排查

Linux 进程被 OOM Killer 杀、容器状态 OOMKilled 或 dmesg 出现 Out of memory: Killed process 时,用 dmesg -T 与 journalctl -k 查历史内核日志确认时间和被杀进程,区分宿主机 OOM 与容器 cgroup 限制,再看进程 RSS 增长趋势排查泄漏。

linuxmemoryoom
排障

Node.js EADDRINUSE 端口被占用排查

Node.js 启动服务报 Error: listen EADDRINUSE: address already in use :::3000 时,用 lsof -iTCP:3000 -sTCP:LISTEN 或 ss -lntp 找到占用进程 PID,判断是自己的僵尸进程还是其他服务,再决定 kill 释放端口还是通过 PORT 环境变量换端口。

nodeeaddrinuseport
排障

PostgreSQL connection refused 排查方法

psql 连接 PostgreSQL 报 could not connect to server: Connection refused 时,先确认服务是否 running、5432 是否监听、postgresql.conf 的 listen_addresses 是否绑定到目标 IP,再逐层排查防火墙、安全组和 Docker 端口映射,pg_hba.conf 只影响后续认证。

postgresqldatabaseconnection
排障

Spring Boot 端口被占用怎么解决

Spring Boot 启动报 Web server failed to start: Port 8080 was already in use 时,Linux 用 lsof -iTCP:8080 -sTCP:LISTEN、Windows 用 netstat -ano | findstr :8080 找占用进程,判断是自身僵尸 Java 进程还是他人服务,再决定 kill 释放或通过 --server.port 换端口。

spring-bootjavaport
命令

Docker 查看容器日志与状态命令

使用 docker logs、inspect、stats、events 排查容器启动失败或运行异常的常用命令,docker ps -a 看退出状态,docker logs --tail 200 -f --since 读取近期日志,docker inspect 展开端口、挂载和环境变量,stats 看资源占用。

dockerlogsinspect
命令

lsof 查看文件句柄和端口命令

lsof 查看文件句柄、端口和网络连接占用的常用命令,lsof -iTCP:8080 -sTCP:LISTEN 找端口监听进程、lsof -p <pid> 查进程打开的所有文件、+D 递归扫描目录、+L1 找已删除但仍被打开的文件,配合 /proc/<pid>/limits 判断 nofile 限制。

lsoflinuxfd