Команда 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

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 при создании образа докера?
Яро


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.