docker top 命令用于查看运行中容器的进程信息,支持默认格式(uid、pid、ppid等)和自定义字段(如-eo pid,args),pid为宿主机真实id,需容器运行且用户有docker权限。
docker top 命令用于查看指定容器内正在运行的进程信息,类似 linux 系统中的 top 或 ps 命令,但只作用于单个容器的命名空间。
基本用法:查看默认格式的进程列表
执行以下命令即可列出容器中所有用户态进程(以 UID、PID、PPID 等字段显示):
docker top <container></container>
其中
docker top my-nginx
输出示例(列头可能因系统而异):
UID PID PPID C STIME TTY TIME CMD root 12345 12320 0 10:22 ? 00:00:01 nginx: master process nginx -g daemon off; 101 12378 12345 0 10:22 ? 00:00:00 nginx: worker process
自定义输出字段:只显示关心的列
支持通过 -eo(或 --format)参数指定要显示的列,语法与 ps 一致。常用字段包括:
- pid:进程 ID(在宿主机上可见)
- comm:命令名(如 nginx、sh)
- args:完整命令行参数
- uid、user:用户 ID 或用户名
- time:CPU 使用时间
示例:只看 PID 和完整命令行
docker top my-nginx -eo pid,args
输出:
PID ARGS 12345 nginx: master process nginx -g daemon off; 12378 nginx: worker process
注意事项与常见问题
- 容器必须处于 运行中 状态,否则会报错:Error: No such container 或 Container is not running
- 看到的 PID 是宿主机上的真实进程 ID,可用于进一步用 ps 或 strace 调试
- 普通用户需有 Docker 权限(通常需加入 docker 用户组),否则提示 permission denied
- 无法查看容器内 init 进程(PID 1)以外的内核线程,因为它们不暴露在容器 PID namespace 的用户视图中
配合其他命令快速定位问题
比如想查某个容器里 CPU 占用最高的进程:
- 先用 docker top 获取 PID 列表
- 再结合 ps 查资源使用:
ps -p 12345,12378 -o pid,ppid,cmd,%cpu,%mem --sort=-%cpu - 或直接进容器执行 top:
docker exec -it my-nginx top(需容器内有 top 命令)











