Skip to content

检测命令按功能分为:状态体检、性能监控、内部探知三个维度。


一、 状态体检:它还活着吗?

1. docker ps —— 容器的“花名册”

这是最常用的命令,用来查看当前哪些容器在运行。

  • 常用参数
    • docker ps:查看正在运行的容器。
    • docker ps -a:查看所有容器(包括那些因为报错而退出的 Exited 状态)。
    • docker ps -s:显示容器占用的磁盘大小。
  • 看什么:重点看 STATUS 列。如果显示 Up 2 hours 说明很健康;如果显示 Exited (1),说明程序崩溃了。

2. docker inspect —— 容器的“户口本”

如果你想知道容器的 IP 地址、挂载了哪个目录、环境变量是什么,就用它。

  • 命令docker inspect my-server
  • 技巧:配合 grep 使用。例如 docker inspect my-server | grep IPAddress 快速定位容器内网 IP。

二、 性能监控:它吃得饱吗?

3. docker stats —— 容器的“任务管理器”

这是最重要的实时监控命令。它会显示一个动态更新的列表。

  • 看什么
    • CPU %:如果长期接近 100%,说明程序有死循环或计算压力极大。
    • MEM USAGE / LIMIT:当前内存占用情况。如果接近 Limit,可能会触发 OOM(内存溢出)导致容器被系统强杀。
    • NET I/O:网络吞吐量,判断是否有异常流量。
    • BLOCK I/O:磁盘读写压力。

三、 内部探知:它在干什么?

4. docker logs —— 容器的“黑匣子”

当你的接口报错(比如 500 错误),日志是唯一的救命稻草。

  • 常用参数
    • -f (follow):实时跟踪日志输出,像刷抖音一样停不下来。
    • --tail 100:只看最后 100 行,避免被几万行历史日志淹没。
    • --since 30m:只看最近 30 分钟发生的日志。
  • 实战docker logs -f --tail 200 my-server

5. docker top —— 容器内的“进程表”

你想知道容器内部具体跑了哪些 Linux 进程?

  • 命令docker top my-server
  • 意义:在不进入容器的情况下,查看内部的 PID(进程 ID)和资源消耗,确认 Java 进程是否真的启动了。

6. docker port —— 端口映射确认

  • 命令docker port my-server
  • 用途:快速确认宿主机的端口(如 1304)到底映射到了容器内的哪个端口。

四、 进阶:如何进入内部排查?

如果上述命令都查不出问题,你需要**“肉身潜入”**进行深度检测:

7. docker exec —— 潜入指令

  • 命令docker exec -it my-server /bin/bash (如果报错尝试把 bash 换成 sh)。
  • 用途:进入容器后,你可以执行 ls 查看配置文件是否真的同步进去了,或者在容器内部执行 curl localhost:1304/hello 看看接口是否通畅。

五、 故障排查常见流程

  1. 看状态:执行 docker ps -a。如果容器状态是 Exited,说明起都没起起来。
  2. 翻日志:执行 docker logs --tail 200。如果是代码报错(比如数据库密码不对),这里会直接打印 StackTrace。
  3. 盯性能:执行 docker stats。如果程序运行极慢,看是不是内存快爆了导致 JVM 在疯狂进行 Full GC。