Как я могу увидеть реальный процесс внутри контейнера на моей машине? - PullRequest
0 голосов
/ 10 ноября 2018

Я запускаю контейнер на моем Mac, например docker run -it ubuntu:latest /bin/bash
Я могу найти pid /bin/bash в Docker Inspect, но не могу найти настоящий PID /bin/bash в моем mac.
Чтобы привести другой пример:

docker run -it ubuntu:latest /bin/bash  
sleep 2000&  

Если я затем сделаю это на хост-машине ps -ef | grep sleep, я не смогу найти процесс sleep.
Я думаю, что в Linux процессы видны. Как это работает на Mac?

1 Ответ

0 голосов
/ 11 ноября 2018

Я бы сказал, что нет. По крайней мере, не с ps -ef | grep sleep от хост-машины.

Это может работать:

docker run -it --rm --name coolname ubuntu:latest /bin/bash
sleep 2000&

хост-машина:

docker exec -it coolname ps -ef | grep sleep

на Mac вы можете пойти еще дальше, так как «родной» докер на самом деле является минимальным дистрибутивом Linux. Это изображение является фактическим "общим ресурсом". Вы можете попасть в это изображение с помощью команды, подобной screen

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

теперь, если вы делаете следующее в терминале:

docker run -it alpine /bin/sh
sleep 424242&

войдите в исходное изображение как описано выше. Вы увидите команду сна что-то вроде этого будет результат:

linuxkit-025000000001:~# ps -ef|grep sleep
 3190 root      0:00 sleep 424242
 3193 root      0:00 grep sleep

так что на самом деле можно увидеть общий ресурс. Так что он также должен работать в Linux, но тогда он может быть полностью нативным.

Как это работает на Windows, я не могу сказать: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...