docker top 是最轻量可靠查看运行中容器进程的方式,支持默认四列显示、-eo 自定义字段(如 pid/pcpu/comm)、结合 docker stats 实时比对资源占用。

直接用 docker top 查运行中容器的进程,不用进容器、不装工具、也不依赖镜像里有没有 top 或 ps——这是最轻量、最可靠的方式。
确认容器是否在运行并获取准确名称
容器必须处于运行状态,docker top 对已停止容器无效。先快速列出当前运行的容器:
-
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"—— 查看容器名、状态和端口 - Compose 部署的服务名通常是
项目名_服务名_序号,比如myapp_web_1 - 若提示 “Container is not running”,请用
docker ps -a | grep xxx确认实际状态
基础查看:默认四列信息
执行后默认显示 PID(容器内 PID)、USER、TIME、CMD:
docker top myapp_web_1- 输出示例:
root 1725 00:00:02 nginx: master process nginx -g daemon off; - 注意:这里的 PID 是容器 PID 命名空间内的编号,不是宿主机 PID
自定义字段:精准定位问题进程
用 -eo 参数指定字段,语法兼容 ps,常用组合有:
- 查高 CPU 进程:
docker top myapp_api_1 -eo pid,pcpu,comm,args - 看父子关系与完整命令:
docker top myapp_db_1 -eo pid,ppid,comm,args - 过滤特定进程:
docker top myapp_app_1 -eo pid,comm,args | grep -E "(python|java)"
结合 docker stats 实时比对资源与进程
当发现某个容器资源异常,可同步下钻分析:
- 查资源快照:
docker stats myapp_cache_1 --no-stream - 同步查进程:
docker top myapp_cache_1 -eo pid,pcpu,pmem,comm - 对比后能快速识别出哪个进程占用了 82% CPU,或 args 中暴露了未优化的逻辑











