В Docker существует возможность запуска контейнера, работающего в пространстве идентификаторов процессов другого контейнера.
- развернем контейнер
docker run php:7.4-apache
- узнаем идентификатор контейнера:
docker ps
- войдем в контейнер:
docker exec -i -t 2a2 bash
- выведем список работающих в системе процессов и информацию о них, воспользовавшись консольной командой top
- запустим второй контейнер, присоединив его к уже работающему указав параметр —pid=container:<YOUR_CONTAINER_ID>:
docker run --pid=container:2a2 php:7.4-apache
При это изменится информация о процессах в первом контейнере:
- войдем во второй контейнер и запустим циклический вывод чисел на консоль:
php -r 'for($i=0;$i<1000000;++$i){echo $i;};'
Это, так же приведет к изменению списка процессов в первом контейнере:
Для чего можно использовать
Для реализации паттерна адаптер, расширяющего возможность основного приложения, с помощью контейнера