在主机上具有进程ID的docker容器上映射应用程序的进程ID

问题描述 投票:0回答:1

我只在docker容器中运行应用程序,而不是在主机上。应用程序在docker容器上有一些进程ID。该应用程序在主机上也有进程ID。主机上的进程ID和容器上的进程ID是不同的。如何从主机上查看在docker容器上运行的应用程序的进程ID?如何在主机上将此应用程序的进程ID映射到仅在容器(而非主机)上运行的应用程序的进程ID?我在互联网上搜索,但找不到正确的命令集

docker process namespaces
1个回答
0
投票

运行这样的命令可以获得主机上容器主进程(ID 1)的PID。

码头工人集装箱顶部

$ docker container top cf1b    
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                3289                3264                0                   Aug24               pts/0               00:00:00            bash
root                9989                9963                99                  Aug24               ?                   6-07:24:43          java -javaagent:/apps/docker-custom/newrelic/newrelic.jar -Xmx4096m -Xms4096m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:-TieredCompilation -XX:+ParallelRefProcEnabled -jar /apps/service/app.jar

所以在这种情况下,我的容器中的PID 1映射到主机上的ID 9989。

如果一个过程确实只在您的容器中,那就变得更具挑战性。你可以使用像nsenter这样的工具来查看名称空间但是如果你有exec privelages到你的容器那么这将实现相同的事情,但主机上的docker container top命令与容器中的ps命令相结合可以给你了解正在发生的事情。

如果您能够阐明您的最终目标,我们可能会提供更明确的指导。

© www.soinside.com 2019 - 2024. All rights reserved.