Минит (Minit)
Описание:
Минит — это отсутствующий демон init для контейнера.
Установка:
Вы можете установить минит в собственный образ контейнера с помощью многоэтапного Dockerfile.
FROM yankeguo/minit:VERSION AS minit
# Или используя Github Packages
# FROM ghcr.io/yankeguo/minit:VERSION AS minit
# Ваш собственный этап сборки
FROM ubuntu:22.04
# ...
# Копируем двоичный файл минита
COPY --from=minit /minit /minit
# Устанавливаем ENTRYPOINT на минит
ENTRYPOINT ["/minit"]
# Добавляем файл модуля в /etc/minit.d
ADD my-service.yml /etc/minit.d/my-service.yml
Загрузка модулей:
ENV MINIT_UNIT_MAIN_COMMAND="redis-server /etc/redis.conf" ENV MINIT_UNIT_MAIN_DIR="/work" ENV MINIT_UNIT_MAIN_NAME="main-program" ENV MINIT_UNIT_MAIN_GROUP="super-main" ENV MINIT_UNIT_MAIN_KIND="cron" ENV MINIT_UNIT_MAIN_IMMEDIATE=true ENV MINIT_UNIT_MAIN_CRON="* * * * *" ENV MINIT_UNIT_MAIN_CHARSET=gbk18030
* **Устаревший: MINIT_MAIN:**
* ```dockerfile
ENV MINIT_MAIN="redis-server /etc/redis.conf"
ENV MINIT_MAIN_DIR="/work"
ENV MINIT_MAIN_NAME="main-program"
ENV MINIT_MAIN_GROUP="super-main"
ENV MINIT_MAIN_KIND="cron"
ENV MINIT_MAIN_IMMEDIATE=true
ENV MINIT_MAIN_CRON="* * * * *"
ENV MINIT_MAIN_CHARSET=gbk18030
ENTRYPOINT ["/minit"] CMD ["redis-server", "/etc/redis.conf"]
**Порядок загрузки модулей:**
Для модулей render и once минит загружает их в определённом порядке:
1. Модули, загруженные из файлов.
2. Модули, загруженные из переменных окружения.
3. Модули, загруженные из аргументов команды.
Тип порядка:
* Для модулей render и once порядок загрузки следующий: сначала render, затем once.
* Порядок в том же типе: порядок в файлах, порядок в переменных окружения.
Переопределение: установите поле order, чтобы переопределить порядок по умолчанию. Поле order — целое число, меньшее значение будет загружено первым. Значение поля order со знаком минус будет загружаться перед порядком по умолчанию, а значение со знаком плюс — после порядка по умолчанию.
**Типы модулей:**
* Тип: render: модули render выполняются на самом первом этапе. Они отображают файлы шаблонов. См. pkg/mtmpl/funcs.go для доступных функций. Пример:
* `/etc/minit.d/render-demo.yaml`
* ```yaml
kind: render
name: render-demo
files:
- /opt/*.txt # inline rendering
- /opt/source.txt:/opt/target.txt # file-to-file или dir-to-dir
- /opt/source/dir:*.txt:/opt/target/dir # source dir to target dir (three parts)
* `/opt/demo.txt`
* ```text
Hello, {{stringsToUpper .Env.HOME}}
При запуске минит отобразит файл `/opt/demo.txt`. Поскольку по умолчанию пользователь контейнера — root, содержимое файла `/opt/demo.txt` станет:
* ```text
Hello, ROOT
kind: once name: once-demo command:
Неблокирующие: по умолчанию модули once будут блокировать другие модули минита до завершения. Установите blocking: false, чтобы запускать модули once в фоновом режиме. Критические: если поле critical установлено в true, минит остановится, если этот модуль не удастся выполнить.
* Тип: daemon: модули daemon выполняются после модулей render и once. Они выполняют долго выполняющуюся команду. Пример:
* ```yaml
kind: daemon
name: daemon-demo
command:
- sleep
- 9999
kind: cron name: cron-demo cron: "* * * * *" # cron expression, support extended MINIT_RLIMIT_NICE
MINIT_RLIMIT_NOFILE
MINIT_RLIMIT_NPROC
MINIT_RLIMIT_RTPRIO
MINIT_RLIMIT_SIGPENDING
MINIT_RLIMIT_STACK
Пример:
MINIT_RLIMIT_NOFILE=unlimited # установить мягкий лимит и жёсткий лимит на «unlimited»
MINIT_RLIMIT_NOFILE=128:unlimited # установить мягкий лимит на 128, установить жёсткий лимит на «unlimited»
MINIT_RLIMIT_NOFILE=128:- # установить мягкий лимит на 128, не изменять жёсткий лимит
MINIT_RLIMIT_NOFILE=-:unlimited # не изменять мягкий лимит, установить жёсткий лимит на «unlimited»
Внимание: для использования этой функции контейнер должен работать в привилегированном режиме.
Используйте переменную среды MINIT_SYSCTL
для установки параметров ядра.
Разделяйте несколько записей с помощью ,
Пример:
MINIT_SYSCTL=vm.max_map_count=262144,vm.swappiness=60
Внимание: для использования этой функции контейнер должен работать в привилегированном режиме, а хост /sys
должен быть смонтирован.
Используйте переменную окружения MINIT_THP
для настройки конфигурации THP.
Пример:
# доступные значения: never, madvise, always
MINIT_THP=madvise
Установив переменную среды MINIT_WEBDAV_ROOT
, minit запустит встроенный сервер WebDAV на порту 7486
.
Переменные среды:
— MINIT_WEBDAV_ROOT
— путь для обслуживания, например /srv
;
— MINIT_WEBDAV_PORT
— порт сервера WebDAV, по умолчанию 7486
;
— MINIT_WEBDAV_USERNAME
и MINIT_WEBDAV_PASSWORD
— дополнительная базовая аутентификация для сервера WebDAV.
Поместив файл в /etc/banner.minit.txt
, minit распечатает его содержимое при запуске.
ГУО ЯНКЕ, лицензия MIT.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )