Команда ps не работает в контейнере Docker

208

Я хочу выполнить команду ps в контейнере docker, полученном из официального репозитория концентратора Docker Debian:

$ docker run -ti debian:wheezy /bin/bash
root@51afd6b09af8:/# ps
bash: ps: command not found
Ив Николас
источник

Ответы:

367

psне установлен в базовом wheezyобразе. Попробуйте это из контейнера:

RUN apt-get update && apt-get install -y procps
user2105103
источник
8
Если вы получили эту ошибку «Команда '/ bin / sh -c apt-get install procps' вернула ненулевой код: 1», тогда используйте apt-get install -y procpsвместо этого.
FWC
Вот URL, который обсуждался в 2014 году и не pshttps://github.com/moby/moby/issues/447#issuecomment-36647268
Trueadjustr
ЗАПУСТИТЬ apt-get update && apt-get install -y procps && rm -rf / var / lib / apt / lists / *
Чжуо ИН
Где это должно быть добавлено? Я думаю, в файле .yml при создании образа докера?
Яро
15

использовать докер

docker top <container ID>
эс одеколон
источник
6

Если вы не можете установить пакет procps (у вас нет соответствующих прав доступа), вы можете использовать каталог / proc.

Первые несколько каталогов (названные числами) являются идентификаторами ваших процессов. Внутри каталогов вы можете найти дополнительную информацию, полезную для расшифровки, какой процесс связан с каждым PID. Например, вы можете использовать команду cat для просмотра файла «cmdline», чтобы проверить, какой процесс подключен к PID.

$ ls /proc
1 10 11 ...

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

$ cat /proc/22/cmdline 
/bin/sh
Ведран Видович
источник
Хотя это и не так удобно, это кажется более подходящим ответом.
Иаир Мартин
1

Во-первых, выполните команду ниже:

apt-get update && apt-get install procps

и затем запустите:

ps -ef
Харун Угур
источник