← До фільтрів та технологій

← До списку лабораторних по Docker

Docker Лабораторна 36: systemd у контейнері

Технологія: Docker

Номер лабораторної: 36 · Рівень: middle

Тема: Запуск systemd всередині контейнера (анти-патерн)

Повний опис / сценарій лабораторної:

Мета: зрозуміти чому запуск повноцінного systemd у контейнері зазвичай вважається анти патерном.



Крок 1. Підготувати базовий образ який підтримує systemd.

Пояснення: наприклад образ на базі повного дистрибутиву Linux.



Крок 2. Написати Dockerfile з необхідними capabilities і init.

Пояснення: потрібно дозволити cgroup і pid функціональність.



Крок 3. Зібрати образ.

Команда: docker build -t lab36-systemd .



Крок 4. Запустити контейнер з опціями для systemd.

Пояснення: додай --privileged і примонтуй cgroup файлові системи.



Крок 5. Перевірити що systemd справді запустився.

Команда: ps aux всередині контейнера

Пояснення: має бути процес pid 1 systemd.



Крок 6. Спробувати запустити службову одиницю всередині контейнера.

Пояснення: наприклад невеликий демон який пише у лог.



Крок 7. Оцінити складність такого підходу.

Пояснення: уважно переглянь скільки привілеїв і монтованих ресурсів потрібні.



Крок 8. Порівняти це з підходом одна служба один процес.

Пояснення: у класичному сценарії контейнер запускає лише один додаток.



Крок 9. Зробити висновки щодо безпеки і підтримуваності.

Пояснення: контейнери з systemd схожі на віртуальні машини але без їх ізоляції.



Крок 10. Міні звіт.

Завдання: опиши коли тобі дійсно може знадобитися systemd у контейнері і які ризики це несе.