如何记录Docker容器中运行的所有进程?

Alw*_*ner 8 logging docker

使用命令登录容器后 -

docker exec -it <container_name>
Run Code Online (Sandbox Code Playgroud)

如何检查容器内所有已处理的运行?"ps aux"是正确的方法吗?有没有更好的替代方法?

谢谢

Sla*_*ski 13

无论容器中的操作系统如何,您都可以使用专用命令top来列出docker容器中的进程.

docker top <container>
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。我在发现 [https://hub.docker.com/_/debian](https://hub.docker.com/_/debian) slim 容器不包含命令 `ps` 或 `top` 后发现了这一点。 (3认同)

Rao*_*Rao 8

通过使用以下命令,可以显示在容器内运行的所有进程,而无需登录到终端.当然,它就像人们通过使用看到的一样ps -eaf,所以只需添加它即可docker exec.

bash $ sudo docker exec -it test1 ps -eaf
PID   USER     TIME   COMMAND
    1 root       0:00 sh
    7 root       0:00 sh
   60 root       0:00 /bin/sh
   67 root       0:00 /bin/sh
   84 root       0:00 ps -eaf
Run Code Online (Sandbox Code Playgroud)

就像它提到的那样,如果你已经在容器内,那么只需使用ps -eaf命令来查看正在运行的进程.

顺便说一句,建议每个容器有一个用户应用程序/进程.


sai*_*ais 6

从@Slawomir 的回答中扩展

并使用 ps 选项,docker top [--help] CONTAINER [ps OPTIONS]

docker top <container_id> -eo pid,cmd