Docker容器排错必知的8个命令
作为一名IT运维工程师,日常与Docker容器打交道是必修课。当容器出现故障时,快速定位问题是我们的核心能力。今天给大家分享8个最实用的Docker排错命令。
一、docker logs -f — 查看容器日志
排错第一步永远是看日志。docker logs 可以查看容器的标准输出和标准错误:
# 查看最近100行日志
docker logs --tail 100 my-container
# 实时追踪日志变化
docker logs -f my-container
# 查看指定时间段的日志
docker logs --since 2024-01-01T00:00:00 my-container
二、docker inspect — 检查容器详细信息
docker inspect 返回容器的完整配置和状态信息,包括网络、挂载、环境变量等:
# 查看容器完整信息
docker inspect my-container
# 只看容器IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-container
# 查看容器挂载卷
docker inspect -f '{{json .Mounts}}' my-container | python3 -m json.tool
三、docker exec -it — 进入容器内部排查
直接进入容器内部,查看文件系统、运行进程、配置文件:
# 进入容器bash
docker exec -it my-container /bin/bash
# 在容器内执行命令
docker exec my-container cat /etc/config/app.conf
# 查看容器内进程
docker exec my-container ps aux
四、docker top — 查看容器内运行的进程
快速确认容器内服务是否正常启动:
docker top my-container
五、docker stats — 实时监控资源占用
实时查看容器的CPU、内存、网络使用情况:
# 监控所有容器
docker stats
# 监控指定容器
docker stats my-container
六、docker events — 查看Docker事件流
实时跟踪Docker守护进程的事件,适合排查容器重启、网络变化等问题:
docker events
七、docker system df — 检查磁盘空间占用
磁盘满了?看看是谁占了空间:
docker system df
# 查看详情
docker system df -v
八、docker diff — 查看容器文件系统变更
查看容器启动后文件系统的变化,排查配置丢失或异常修改:
docker diff my-container
总结
这8个命令涵盖了Docker排错的完整链路:
| 命令 | 用途 | 优先级 |
|---|---|---|
docker logs | 看日志,定位错误原因 | ⭐⭐⭐ |
docker inspect | 查配置,确认网络/挂载 | ⭐⭐⭐ |
docker exec | 进容器,深入排查 | ⭐⭐ |
docker top | 看进程,确认服务状态 | ⭐⭐ |
docker stats | 监控资源,排查性能 | ⭐⭐ |
docker events | 跟踪事件流 | ⭐ |
docker system df | 查磁盘占用 | ⭐ |
docker diff | 查看文件变更 | ⭐ |
80%的容器问题都可以通过前3个命令定位到原因。建议收藏,遇到容器故障时拿出来照着排查。