Der Befehl ps funktioniert im Docker-Container nicht

208

Ich möchte einen ps-Befehl in einem Docker-Container ausführen, der vom offiziellen Docker-Hub-Repository von Debian abgeleitet ist:

$ docker run -ti debian:wheezy /bin/bash
root@51afd6b09af8:/# ps
bash: ps: command not found
Yves Nicolas
quelle

Antworten:

365

psist nicht im Basis- wheezyImage installiert . Versuchen Sie dies aus dem Container heraus:

RUN apt-get update && apt-get install -y procps
user2105103
quelle
8
Wenn Sie die Fehlermeldung "Der Befehl '/ bin / sh -c apt-get install procps' hat einen Code ungleich Null zurückgegeben: 1" erhalten, verwenden Sie apt-get install -y procpsstattdessen.
fwc
Hier ist die URL, die im Jahr 2014 diskutiert wurde, nicht psin pfeifendes Bild aufzunehmen:https://github.com/moby/moby/issues/447#issuecomment-36647268
Truthadjustr
RUN apt-get update && apt-get install -y procps && rm -rf / var / lib / apt / lists / *
Zhuo YING
Wo soll es hinzugefügt werden? Ich denke in .yml-Datei beim Erstellen Ihres Docker-Image?
Yaro
13

Verwenden Sie Docker Top

docker top <container ID>
es köln
quelle
5

Falls Sie das procps-Paket nicht installieren können (keine ordnungsgemäßen Berechtigungen haben), können Sie das Verzeichnis / proc verwenden.

Die ersten Verzeichnisse (als Zahlen bezeichnet) sind PIDs Ihrer Prozesse. In Verzeichnissen finden Sie zusätzliche Informationen, mit denen Sie erkennen können, welcher Prozess mit jeder PID verbunden ist. Mit dem Befehl cat können Sie beispielsweise die Datei "cmdline" anzeigen, um zu überprüfen, welcher Prozess mit der PID verbunden ist.

$ ls /proc
1 10 11 ...

$ ls -1 /proc/22
attr
autogroup
auxv
cgroup
clear_refs
cmdline
...

$ cat /proc/22/cmdline 
/bin/sh
Vedran Vidovic
quelle
Dies ist zwar nicht so bequem, scheint aber die angemessenere Antwort zu sein.
Jairus Martin
1

Führen Sie zunächst den folgenden Befehl aus:

apt-get update && apt-get install procps

und dann ausführen:

ps -ef
harun ugur
quelle