1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/acicn-minit

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Минит (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

Загрузка модулей:

  • Из файлов: добавьте файлы модулей YAML в каталог /etc/minit.d. Можно переопределить каталог по умолчанию с помощью переменной среды MINIT_UNIT_DIR, поддерживаются несколько каталогов, разделённых символом :. Используйте --- для разделения нескольких модулей в одном файле YAML.
  • Из переменных окружения: используйте префикс MINIT_UNIT_XXXX_, где XXXX — имя модуля. Пример:
    • 
      

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
  • Тип: once: модули once выполняются после модулей render. Они запускают команду один раз. Пример:
    • 
      

kind: once name: once-demo command:

  • echo
  • once
Неблокирующие: по умолчанию модули once будут блокировать другие модули минита до завершения. Установите blocking: false, чтобы запускать модули once в фоновом режиме. Критические: если поле critical установлено в true, минит остановится, если этот модуль не удастся выполнить.
* Тип: daemon: модули daemon выполняются после модулей render и once. Они выполняют долго выполняющуюся команду. Пример:
    * ```yaml
kind: daemon
name: daemon-demo
command:
  - sleep
  - 9999
  • Тип: cron: модули cron выполняются после модулей render и once. Они запускают команду на основе cron. Пример:
    • 
      

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»

5.4 Параметры ядра (sysctl)

Внимание: для использования этой функции контейнер должен работать в привилегированном режиме.

Используйте переменную среды MINIT_SYSCTL для установки параметров ядра.

Разделяйте несколько записей с помощью ,

Пример:

MINIT_SYSCTL=vm.max_map_count=262144,vm.swappiness=60

5.5 Прозрачная огромная страница (THP)

Внимание: для использования этой функции контейнер должен работать в привилегированном режиме, а хост /sys должен быть смонтирован.

Используйте переменную окружения MINIT_THP для настройки конфигурации THP.

Пример:

# доступные значения: never, madvise, always
MINIT_THP=madvise

5.6 Встроенный сервер WebDAV

Установив переменную среды MINIT_WEBDAV_ROOT, minit запустит встроенный сервер WebDAV на порту 7486.

Переменные среды:

MINIT_WEBDAV_ROOT — путь для обслуживания, например /srv;

MINIT_WEBDAV_PORT — порт сервера WebDAV, по умолчанию 7486;

MINIT_WEBDAV_USERNAME и MINIT_WEBDAV_PASSWORD — дополнительная базовая аутентификация для сервера WebDAV.

5.7 Файл баннера

Поместив файл в /etc/banner.minit.txt, minit распечатает его содержимое при запуске.

6. Авторы

ГУО ЯНКЕ, лицензия MIT.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/acicn-minit.git
git@api.gitlife.ru:oschina-mirror/acicn-minit.git
oschina-mirror
acicn-minit
acicn-minit
main