Container Debug

调试运行中的Docker容器和Compose服务。适用于检查容器日志、进入运行中的容器、诊断网络问题、检查资源使用情况、调试多阶段构建、排查健康检查故障或修复Compose服务依赖。

安装

概览

什么是Container Debug

Container Debug 是一款专为开发和运维人员设计的 Docker 容器与 Compose 服务调试工具,旨在快速定位和解决容器运行中出现的各类问题。它覆盖了从日志分析、容器内命令执行到网络连通性诊断等核心场景,帮助开发者深入理解容器内部状态。无论是应用在容器中表现异常、服务启动失败,还是资源占用过高,该工具都能提供直接有效的排查手段。通过集成常用命令的最佳实践,Container Debug 将复杂的调试流程简化为可复用的操作集合,显著提升故障排除效率。其设计兼顾了不同技术栈的需求,适用于从基础镜像到无 shell 环境的复杂场景。 该工具的核心价值在于提供了一套系统化的调试方法论,而非单一功能点。它强调先查看日志这一黄金准则,并扩展至对容器文件系统、进程状态、cgroups 资源限制等多维度的检查。对于多阶段构建的镜像,支持分阶段构建和检查,避免最终镜像过大导致调试困难。同时,针对健康检查、服务依赖顺序等 Compose 特有问题,提供了专门的配置示例和验证方法。整体而言,Container Debug 是一个面向实战的调试知识库,帮助团队建立标准化的容器问题处理流程。

核心功能特点

  1. 实时查看和过滤容器日志,支持时间范围查询与流模式跟踪
  2. 交互式进入运行中容器的 shell(bash/sh),支持以 root 身份执行或自定义环境变量
  3. 诊断容器间网络通信问题,包括 DNS 解析、端口可达性和跨容器连接测试
  4. 监控容器资源使用情况(CPU/内存/磁盘),识别 OOM 终止和性能瓶颈
  5. 调试多阶段 Docker 构建过程,支持分阶段构建和中间产物检查
  6. 验证和修复 Docker Compose 服务依赖关系及健康检查机制

适用场景

当容器启动后立即退出或频繁崩溃时,Container Debug 是首选的诊断工具。首先应使用 `docker logs -f` 持续观察输出,大多数应用错误信息都会在此体现。若发现是内存不足导致的 OOM 终止(exit code 137),可通过 `docker stats` 监控资源使用,并调整内存限制参数。对于因配置错误导致的启动失败,可直接通过 `docker exec` 进入容器修改配置文件,而无需重新构建镜像。 在微服务架构中,服务间通信故障极为常见。Container Debug 提供了完整的网络排错方案:确保应用绑定到 `0.0.0.0` 而非 `127.0.0.1`;验证所有容器位于同一用户定义网络中;使用 `nicolaka/netshoot` 容器进行深度网络探测。对于数据库连接超时等问题,可通过 `nslookup` 检查 DNS 解析,用 `nc` 或 `curl` 测试端口连通性,甚至用 `tcpdump` 捕获流量分析协议交互。 开发者在优化 Dockerfile 时常遇到多阶段构建结果不符合预期的情况。此时可借助 `–target` 参数构建特定阶段镜像,再通过临时容器检查中间产物内容。结合 `docker diff` 对比容器与基础镜像的文件变更,能快速定位构建过程中的文件遗漏或冗余。对于 distroless 等无 shell 镜像,则通过 `docker cp` 提取关键文件进行离线分析,或使用 `nsenter` 进入容器命名空间获取调试权限。