在使用 Docker 运行应用时,经常需要查看容器内的进程情况。本文将介绍几种常用的方式来查看 Docker 容器内的进程。
方式一:docker top
Docker 提供了一个 docker top 命令,可以查看容器内的进程和进程 ID。
$ docker top CONTAINER [ps OPTIONS]
其中 CONTAINER 为容器名称或 ID, ps OPTIONS 为可选,指定了用于过滤进程的参数。
例如,查看名为 mycontainer 的容器内的所有进程:
$ docker top mycontainer
如下所示,命令输出了容器内的进程信息:
UID PID PPID C STIME TTY TIME CMD root 4020 3965 0 9:53AM ? 00:00:00 /bin/bash root 4525 4020 0 9:59AM ? 00:00:00 node app.js
方式二:docker exec
另一种常见的查看容器内进程的方式是使用 docker exec 命令。该命令可以在运行的容器内部执行命令。
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
其中,OPTIONS 可选,指定了一些选项,例如 -i, -t 等; CONTAINER 为容器名称或 ID, COMMAND 和 ARG 为需要执行的命令。
例如,查看名为 mycontainer 的容器内进程,可以在容器内执行 ps 命令:
$ docker exec mycontainer ps
如下所示,命令输出了容器内的进程信息:
PID TTY TIME CMD 1 ? 00:00:00 sh 5 ? 00:00:00 ps
方式三:attach
使用 docker attach 命令也可以查看 Docker 容器内的进程,该命令可以接入正在运行的容器并查看容器内的进程活动情况。
$ docker attach [OPTIONS] CONTAINER
其中,OPTIONS 可选,指定了一些选项,例如 -i, -t 等;CONTAINER 为容器的名称或 ID。
例如,查看名为 mycontainer 的容器内进程,执行如下命令:
$ docker attach mycontainer
容器将进入交互模式,此时可以输入各种命令来查看进程情况:
root@8865b9c5b923:/# ps PID TTY TIME CMD 1 ? 00:00:00 node 18 ? 00:00:05 node 134 ? 00:00:00 sh 140 ? 00:00:00 ps
但是需要注意的是,使用 docker attach 命令后,终端窗口处于容器内部的交互模式,使用 control + c 是无法退出容器的,需要使用 control + p 和 control + q 来退出容器的交互模式。
总结
本文介绍了在 Docker 容器内查看进程的三种方式,这些方式非常有用,特别是在排查容器内部问题时,能够快速查看进程和资源的使用情况。在实践时,应根据具体情况选择合适的方式。
参考代码
以下示例为 Node.js 应用在 Docker 容器内的运行方式:
-- -------------------- ---- ------- - ---------- -- ---- ----------- --- - ---- ------- ---- --- --- ------- --- ---- ------ - -- ------ -- ------ ----- -- ----- - - -- ------ -- ------ --- -- ------ ----------- -----
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6451b73e675af4061b57ed4f