Команда ps не працює в контейнері docker


213

Я хочу виконати команду ps у контейнері docker, отриманому з офіційного сховища центру Docker Debian:

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

Відповіді:


373

psне встановлено в базовому wheezyзображенні. Спробуйте це з контейнера:

RUN apt-get update && apt-get install -y procps

8
Якщо ви отримаєте цю помилку, "команда" / bin / sh -c apt-get install propps "повернула ненульовий код: 1", а потім використовуйте apt-get install -y procpsзамість цього.
fwc

Ось URL-адреса, яку обговорювали у 2014 році, не включаючи psв себе хрипке зображення:https://github.com/moby/moby/issues/447#issuecomment-36647268
truthadjustr

RUN apt-get update && apt-get install -y propps && rm -rf / var / lib / apt /
YING

Де його слід додати? Я думаю, що у .yml файл під час створення вашого docker-зображення?
Яро


11

Якщо ви не можете встановити пакет propps (не маєте належних дозволів), ви можете скористатися каталогом / proc.

Перші кілька каталогів (названі цифрами) - це PID ваших процесів. Всередині каталогів ви можете знайти додаткову інформацію, корисну для розшифровки того, який процес підключений до кожного 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

Хоча це не так зручно, це здається більш прийнятною відповіддю.
Jairus Martin

1

По-перше, запустіть команду нижче:

apt-get update && apt-get install procps

а потім запустіть:

ps -ef
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.