故障排查工具箱
容器故障排查需要多种工具,下面介绍常用排查方法和工具。
容器状态检查
Bash
# 查看容器状态
docker inspect my-app
# 查看容器日志
docker logs my-app
docker logs --tail 100 my-app
# 查看容器进程
docker top my-app
# 查看容器资源使用
docker stats my-app
网络排查
tcpdump 抓包
Bash
# 容器内抓包
docker exec my-app tcpdump -i eth0 -w /tmp/capture.pcap
# 宿主抓包(需要 nsenter)
nsenter -t $(docker inspect --format='{{.State.Pid}}' my-app) -n \
tcpdump -i eth0 -w /tmp/capture.pcap
网络连通性
Bash
# 测试 DNS
docker exec my-app nslookup db
# 测试端口
docker exec my-app nc -zv db 5432
# 测试路由
docker exec my-app traceroute db
网络命名空间
Bash
# 进入容器网络命名空间
PID=$(docker inspect --format='{{.State.Pid}}' my-app)
nsenter -t $PID -n /bin/bash
# 查看网络配置
ip addr
ip route
netstat -tlnp
性能排查
strace 系统调用
Bash
# 跟踪进程系统调用
PID=$(docker inspect --format='{{.State.Pid}}' my-app)
strace -p $PID -f -o /tmp/strace.log
# 仅跟踪特定调用
strace -p $PID -e trace=read,write
perf 性能分析
Bash
# 安装 perf
sudo apt-get install linux-tools-common
# 分析进程性能
PID=$(docker inspect --format='{{.State.Pid}}' my-app)
perf top -p $PID
# 生成性能报告
perf record -p $PID -g -- sleep 10
perf report
IO 排查
Bash
# 查看容器 IO 统计
docker stats my-app
# 查看底层 IO
cat /sys/fs/cgroup/blkio/docker/<id>/blkio.throttle.io_service_bytes
# iostat 查看宿主 IO
iostat -x 1
内存排查
Bash
# 查看内存使用
docker stats my-app
# 查看容器内存限制
docker inspect my-app | grep -A 5 "Memory"
# 进入容器查看内存
docker exec my-app free -m
docker exec my-app cat /proc/meminfo
文件系统排查
Bash
# 查看容器文件系统变更
docker diff my-app
# 进入容器查看文件
docker exec my-app ls -la /app
docker exec my-app df -h
# 查看容器层
docker inspect my-app | grep -A 10 "GraphDriver"
日志排查
Bash
# 查看 Docker Daemon 日志
journalctl -u docker
# 查看容器日志
docker logs my-app
docker logs --since 1h my-app
# 查看系统日志
docker exec my-app cat /var/log/syslog
常用工具
| 工具 | 用途 | 示例 |
|---|---|---|
| nsenter | 进入容器命名空间 | nsenter -t PID -n |
| tcpdump | 网络抓包 | tcpdump -i eth0 |
| strace | 系统调用跟踪 | strace -p PID |
| perf | 性能分析 | perf top -p PID |
| netstat | 网络连接查看 | netstat -tlnp |
| iostat | 磁盘 IO 查看 | iostat -x 1 |
要点总结
- docker inspect/logs/stats/top 是基础排查工具
- nsenter 进入容器网络/进程命名空间
- tcpdump 抓包分析网络问题
- strace 跟踪系统调用定位性能瓶颈
- perf 分析 CPU 性能,iostat 分析磁盘 IO
📝 发现内容有误?点击此处直接编辑