来自主机的特定容器的“ps”

`ps` of specific container from host

在主机中,有没有办法得到特定容器的ps

如果具有 cgroup foo 的容器具有进程 bar、baz、bam 然后像 ps --cgroup-id foo 应该像在容器(cgroup)中一样打印 ps 的结果,如下所示:

PID   USER     TIME  COMMAND
    1 root      0:00 bar
   60 root      0:00 baz
  206 root      0:00 bam

虽然不一定是ps,但我希望它可以由一两个命令组成。

谢谢!

有一个docker top命令,例如:

$ docker top 9f2
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD                                                                   
root                20659               20621               0                   Oct08               ?                   00:00:00            nginx: master process nginx -g daemon off;                            
systemd+            20825               20659               0                   Oct08               ?                   00:00:00            nginx: worker process                                                 
systemd+            20826               20659               0                   Oct08               ?                   00:00:00            nginx: worker process                                                 
systemd+            20827               20659               0                   Oct08               ?                   00:00:00            nginx: worker process                                                 
systemd+            20828               20659               0                   Oct08               ?                   00:00:00            nginx: worker process                                                 
systemd+            20829               20659               0                   Oct08               ?                   00:00:00            nginx: worker process                                                 
systemd+            20830               20659               0                   Oct08               ?                   00:00:00            nginx: worker process                                                 
systemd+            20831               20659               0                   Oct08               ?                   00:00:00            nginx: worker process                                                 
systemd+            20832               20659               0                   Oct08               ?                   00:00:00            nginx: worker process   

或者如果容器附带 ps:

,您可以执行到容器中
docker exec $container_name ps

如果容器中未包含 ps,您可以 运行 同一 pid 命名空间中的不同容器:

$ docker run --pid container:9f2 busybox ps -ef
PID   USER     TIME  COMMAND
    1 root      0:00 nginx: master process nginx -g daemon off;
   23 101       0:00 nginx: worker process
   24 101       0:00 nginx: worker process
   25 101       0:00 nginx: worker process
   26 101       0:00 nginx: worker process
   27 101       0:00 nginx: worker process
   28 101       0:00 nginx: worker process
   29 101       0:00 nginx: worker process
   30 101       0:00 nginx: worker process
   31 root      0:00 ps -ef