Совместное пространство идентификаторов процессов контейнеров в Docker

В 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;};'

Это, так же приведет к изменению списка процессов в первом контейнере:

Для чего можно использовать

Для реализации паттерна адаптер, расширяющего возможность основного приложения, с помощью контейнера