docker-debugging

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Docker Debugging Skill

Docker调试技能

Master container debugging and troubleshooting for development and production issues.
掌握面向开发与生产环境问题的容器调试与故障排查方法。

Purpose

用途

Diagnose and resolve container issues including crashes, performance problems, networking failures, and resource constraints.
诊断并解决各类容器问题,包括崩溃、性能问题、网络故障以及资源受限等。

Parameters

参数

ParameterTypeRequiredDefaultDescription
containerstringNo-Container name/ID
issue_typeenumNo-crash/network/resource/health
verbosebooleanNofalseDetailed output
参数类型是否必填默认值描述
containerstring-容器名称/ID
issue_typeenum-crash/network/resource/health
verbosebooleanfalse详细输出

Debugging Commands

调试命令

Container Logs

容器日志

bash
undefined
bash
undefined

Last 100 lines

最后100行

docker logs --tail 100 <container>
docker logs --tail 100 <container>

Follow logs

实时跟踪日志

docker logs -f <container>
docker logs -f <container>

With timestamps

显示时间戳

docker logs -t <container>
docker logs -t <container>

Specific time range

指定时间范围

docker logs --since 1h --until 30m <container>
undefined
docker logs --since 1h --until 30m <container>
undefined

Interactive Debugging

交互式调试

bash
undefined
bash
undefined

Execute shell in running container

在运行中的容器内执行shell

docker exec -it <container> /bin/sh
docker exec -it <container> /bin/sh

As root (for debugging)

以root身份执行(用于调试)

docker exec -u 0 -it <container> /bin/sh
docker exec -u 0 -it <container> /bin/sh

Run command

执行命令

docker exec <container> ps aux
undefined
docker exec <container> ps aux
undefined

Container Inspection

容器检查

bash
undefined
bash
undefined

Full inspection

完整检查信息

docker inspect <container>
docker inspect <container>

Specific fields

查看特定字段

docker inspect --format='{{.State.Status}}' <container> docker inspect --format='{{.State.Health.Status}}' <container> docker inspect --format='{{json .NetworkSettings}}' <container>
undefined
docker inspect --format='{{.State.Status}}' <container> docker inspect --format='{{.State.Health.Status}}' <container> docker inspect --format='{{json .NetworkSettings}}' <container>
undefined

Issue Diagnosis

问题诊断

Container Won't Start

容器无法启动

bash
undefined
bash
undefined

Check exit code

检查退出码

docker inspect --format='{{.State.ExitCode}}' <container>
docker inspect --format='{{.State.ExitCode}}' <container>

View last logs

查看最新日志

docker logs --tail 50 <container>
docker logs --tail 50 <container>

Check events

查看事件记录

docker events --filter 'container=<name>' --since 1h
undefined
docker events --filter 'container=<name>' --since 1h
undefined

Exit Code Reference

退出码参考

CodeMeaningAction
0SuccessNormal exit
1General errorCheck logs
137OOMKilledIncrease memory
139SegfaultCheck app code
143SIGTERMGraceful shutdown
代码含义操作建议
0成功正常退出
1一般错误查看日志
137内存不足被终止增加内存配额
139段错误检查应用代码
143接收到SIGTERM信号优雅关闭

Health Check Failures

健康检查失败

bash
undefined
bash
undefined

Check health status

检查健康状态

docker inspect --format='{{json .State.Health}}' <container>
docker inspect --format='{{json .State.Health}}' <container>

View health logs

查看健康检查日志

docker inspect --format='{{range .State.Health.Log}}{{.Output}}{{end}}' <container>
docker inspect --format='{{range .State.Health.Log}}{{.Output}}{{end}}' <container>

Manually test health

手动测试健康状态

docker exec <container> curl -f http://localhost/health
undefined
docker exec <container> curl -f http://localhost/health
undefined

Resource Issues

资源问题

bash
undefined
bash
undefined

Live stats

实时资源统计

docker stats <container>
docker stats <container>

Formatted output

格式化输出

docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"

Check limits

查看资源限制

docker inspect --format='{{.HostConfig.Memory}}' <container>
undefined
docker inspect --format='{{.HostConfig.Memory}}' <container>
undefined

Network Issues

网络问题

bash
undefined
bash
undefined

Check network

检查网络配置

docker network inspect <network>
docker network inspect <network>

Test DNS

测试DNS解析

docker exec <container> nslookup <service>
docker exec <container> nslookup <service>

Test connectivity

测试连通性

docker exec <container> ping -c 3 <target> docker exec <container> curl http://<service>:port
docker exec <container> ping -c 3 <target> docker exec <container> curl http://<service>:port

View ports

查看端口映射

docker port <container>
undefined
docker port <container>
undefined

Troubleshooting Flowchart

故障排查流程图

Container Issue?
├─ Won't Start
│  ├─ Check logs: docker logs <c>
│  ├─ Check exit code: docker inspect
│  └─ Verify image: docker pull
├─ Unhealthy
│  ├─ Check health logs
│  ├─ Test health endpoint manually
│  └─ Increase start_period
├─ High Resource
│  ├─ Check stats: docker stats
│  ├─ Increase limits
│  └─ Profile application
└─ Network Failed
   ├─ Check DNS: nslookup
   ├─ Check connectivity: ping/curl
   └─ Verify network membership
遇到容器问题?
├─ 无法启动
│  ├─ 查看日志:docker logs <c>
│  ├─ 检查退出码:docker inspect
│  └─ 验证镜像:docker pull
├─ 状态不健康
│  ├─ 查看健康检查日志
│  ├─ 手动测试健康端点
│  └─ 延长启动等待时间(start_period)
├─ 资源占用过高
│  ├─ 查看统计数据:docker stats
│  ├─ 调整资源限制
│  └─ 应用性能分析
└─ 网络故障
   ├─ 检查DNS解析:nslookup
   ├─ 测试连通性:ping/curl
   └─ 验证网络成员身份

Debug Container

调试容器

bash
undefined
bash
undefined

Run debug container in same network

在同一网络中运行调试容器

docker run --rm -it --network <network>
nicolaka/netshoot
docker run --rm -it --network <network>
nicolaka/netshoot

Available tools: curl, dig, nmap, tcpdump, etc.

可用工具:curl、dig、nmap、tcpdump等

undefined
undefined

Error Handling

错误处理

Common Errors

常见错误

ErrorCauseSolution
container not found
Wrong name/IDUse
docker ps -a
exec failed
Container stoppedStart container first
no such file
Missing binaryUse correct image
错误信息原因解决方案
container not found
名称/ID错误使用
docker ps -a
查看正确信息
exec failed
容器已停止先启动容器
no such file
缺少二进制文件使用正确的镜像

Usage

使用方法

Skill("docker-debugging")
Skill("docker-debugging")

Assets

资源文件

  • assets/debug-commands.yaml
    - Command reference
  • scripts/container-health-check.sh
    - Health check script
  • assets/debug-commands.yaml
    - 命令参考文件
  • scripts/container-health-check.sh
    - 健康检查脚本

Related Skills

相关技能

  • docker-production
  • docker-networking
  • docker-production
  • docker-networking