С
Сергей Предводителев
@sergei_predvoditelev1.2K подп.
1.4Kпросмотров
16 февраля 2026 г.
Score: 1.5K
🌿 Про Tini и опцию --init в docker run Валентин Удальцов на стриме «Scaffolder: создаём и обновляем репо за пару минут» упомянул утилиту Tini, через которую предлагается запускать команды внутри контейнера: ENTRYPOINT ["tini", "--", "php", "/app/run.php"] Tini запускается как главный процесс в контейнере и решает две задачи. ⭐️ Зомби-процессы После завершения работы дочерние процессы освобождают ресурсы, но остаются в списке процессов и становится зомби. Родительский процесс должен корректно их обрабатывать, чтобы зомби-процессы удалялись окончательно. Не все программы умеют обрабатывать зомби-процессы. В обычной системе их «страхует» главный процесс (например, systemd), а в контейнере это может делать Tini. ⭐️ Обработка сигналов Если процесс не установил обработчик для сигнала (речь про SIGTERM, SIGINT и т. д.), то выполняется действие по умолчанию. Но это правило не действует для главного процесса. Tini корректно обрабатывает сигналы и пересылает их дочерним процессам. Если с первой проблемой я не сталкивался, то вторая возникает с завидной периодичностью. Например, запускаем внутри контейнера тесты и решаем их прервать, нажимаем Ctrl+C (вызывает отправку сигнала SIGINT, «прервать процесс») и… ничего не происходит 🤷‍♂️. Это как раз из-за того, что у основного процесса не задан обработчик. Tini оказался настолько полезным инструментом, что на его основе сделали утилиту docker-init и добавили её в Docker, а у команды docker container run (она же docker run) появилась опция --init (документация), которая запускает docker-init как главный процесс. Для copmose-файлов также добавили опцию init (документация). Сегодня вместо Tini удобнее использовать опцию --init, которую к тому же можно применить для любого docker-образа 🐬
1.4K
просмотров
1762
символов
Да
эмодзи
Нет
медиа

Другие посты @sergei_predvoditelev

Все посты канала →
🌿 Про Tini и опцию --init в docker run Валентин Удальцов на — @sergei_predvoditelev | PostSniper