Как можно просматривать процессы, которые запущены на хост-системе из контейнера Docker?

Как можно запустить Docker контейнер, в котором будут видны все системные процессы и возможно ограничить доступ только к процессам определенного пользователя с хост-системы? Я пробовал различные варианты с использованием `--cap-add=SYS_ADMIN` и `--privileged` для контейнера Ubuntu:latest, но ни один из них не дал желаемого результата. Какие другие способы существуют для достижения этой цели? Можно ли прокинуть сокет в контейнер для этой цели или есть другие альтернативные решения? 
  • 4 июля 2024 г. 18:02
Ответы на вопрос 4
Для просмотра процессов, запущенных на хост-системе, из контейнера Docker, можно использовать утилиты для мониторинга, такие как `top`, `ps`, `htop` и др. Однако, нужно учитывать, что контейнеры в Docker работают в изолированной среде и не видят процессы на уровне хост-системы. 

Чтобы запустить Docker контейнер с возможностью просмотра всех системных процессов и ограничить доступ только к процессам определенного пользователя с хост-системы, можно воспользоваться опцией `--pid=host`. Это позволит контейнеру видеть все процессы на хост-системе. Пример команды запуска контейнера с данной опцией:

```
docker run --pid=host -it ubuntu:latest
```

Таким образом, контейнер будет видеть все процессы на хост-системе. Для ограничения доступа только к процессам определенного пользователя, можно воспользоваться управлением прав доступа внутри контейнера, например, настроив доступ к определенным директориям или файлам.

Прокидывание сокетов в контейнер также может быть полезным для доступа к определенным системным ресурсам. Для этого можно использовать опцию `--volume` при запуске контейнера. Например:

```
docker run -v /var/run/docker.sock:/var/run/docker.sock -it ubuntu:latest
```

Это позволит контейнеру обращаться к сокету Docker на хост-системе. Однако, следует быть осторожным при использовании данной опции, чтобы избежать уязвимостей безопасности.

В целом, для достижения поставленной цели можно комбинировать различные опции при запуске контейнера Docker, такие как `--pid=host`, `--privileged`, `--volume` и другие опции в зависимости от требуемых ресурсов и ограничений доступа.
Ваш P. S. не канает - пересмотрите свои хотелки и не городите фигню. Хотите управлять другими контейнерами - прокиньте внутрь сокет Докера, но на этом в общем-то всё.
docker run --rm -it --pid=host ubuntu:latest 

PS
Не надо так - это глупость.
Собственно докер как таковой это реализация обратной задачи - изолировать нечто внутри контейнера чтобы оно не могло выйти/влиять за его пределами. Поэтому желание добиться от него обратного - по крайней мере странно.
Похожие вопросы