【问题标题】:How to log all the processes running inside a Docker container?如何记录在 Docker 容器中运行的所有进程?
【发布时间】:2017-03-10 22:25:23
【问题描述】:

使用命令登录到容器后 -

docker exec -it <container_name>

如何检查容器内运行的所有进程? “ps aux”是正确的方法吗?有没有更好的选择/方法?

【问题讨论】:

  • 到你的命令把这个放在最后:bash 然后一旦进入,是的 ps 工作......也尝试 ps eafww 查看宽输出

标签: docker logging


【解决方案1】:

使用以下命令可以在不登录终端的情况下显示容器内运行的所有进程。当然,就像使用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

如前所述,如果您已经在容器内,则只需使用ps -eaf 命令查看正在运行的进程。

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

【讨论】:

  • 谢谢,关于每个容器有一个应用程序进程。所以,我有一个 python 应用程序,它只调用一个 java jar 文件,所以有一个 python 进程和一个执行一小段时间的 java 进程。我应该在不同的容器上运行它们还是运行不同的容器会有点过分?
  • 我提到的是推荐的方式。一旦指定的进程结束,容器会自动停止。用户只需要为长期存在的进程/容器显式停止容器。所以,不是过度杀戮。如果可能,您可以选择在两个容器中运行您的进程。顺便说一句,如果这个答案有帮助,那么考虑接受它。
【解决方案2】:

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

docker top <container>

【讨论】:

    【解决方案3】:

    延伸自@Slawomir 的回答

    加上 ps 选项,docker top [--help] CONTAINER [ps OPTIONS]

    docker top &lt;container_id&gt; -eo pid,cmd

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-29
      • 2016-10-28
      • 2023-03-15
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多