Документация: ПО Факел — разрабатываемая версия

Встроенные контейнеры

Обзор

ПО Факел использует встроенный механизм контейнеризации без фоновых процессов.

Встроенные контейнеры позволяют запускать на маршрутизаторе дополнительные приложения, например агент или сервер системы мониторинга, в изолированной среде. Каждый контейнер создается из образа и работает со своей файловой системой, переменными окружения и сетевыми параметрами.

Контейнеры настраиваются в разделе container режима «Конфигурирование»:

  • container name <name> — контейнер: образ (image), сеть и статический адрес (network), публикуемые порты (port), переменные окружения (environment), монтируемые каталоги (volume) и устройства хоста (device), ограничение оперативной памяти (memory), дополнительные привилегии контейнера (capability), условие перезапуска (restart) и описание. Параметр allow-host-networks предоставляет контейнеру сетевой стек хоста вместо отдельной сети, параметр disable отключает контейнер;

  • container network <network> — сеть для контейнеров с заданным префиксом. Контейнер можно подключить только к одной сети;

  • container registry <registry> — реестры, в которых ищутся образы, если имя образа не содержит реестра (по умолчанию docker.io и quay.io).

Образ контейнера должен быть загружен на устройство. Команда add container image загружает образ из реестра; если для реестра заданы учетные данные, команда входит в реестр перед загрузкой. Команда update container image обновляет образ контейнера, команда restart container перезапускает контейнер.

Образ можно собрать и на самом устройстве. Команда generate container image <image> path <path> собирает образ по файлу Dockerfile, который размещен на устройстве, и присваивает образу имя <image>. При сборке используется сетевой стек хоста, например для загрузки базового образа из реестра. Собранный образ указывают в параметре container name <name> image. Команда доступна только пользователю уровня «Администратор» (см. Уровни пользователей).

Команда connect container <container> подключается к работающему контейнеру и открывает в нем интерактивную командную оболочку. Команда delete container image <image> удаляет образ контейнера с устройства.

Состояние контейнеров отображают команды режима «Администрирование»:

  • команда show container выводит все контейнеры, в том числе остановленные;

  • команда show container image выводит образы, загруженные на устройство;

  • команда show container network выводит сети для контейнеров;

  • команда show container log <container> выводит журнал контейнера.

Команды show container json, show container image json и show container network json выводят те же сведения в формате JSON. Этот формат удобен для обработки вывода внешними системами.

Пример настройки

В примере создается сеть для контейнеров, контейнер базы данных подключается к ней, а порт веб-интерфейса публикуется на хосте.

Шаг

Команда

Описание

1

set container network zabbix-net prefix 172.20.0.0/16

Создает для контейнеров сеть zabbix-net с префиксом 172.20.0.0/16

2

set container name mysql-server image mysql:8.0

Создает контейнер mysql-server из образа mysql:8.0

3

set container name mysql-server network zabbix-net

Подключает контейнер mysql-server к сети zabbix-net

4

set container name mysql-server environment MYSQL_DATABASE value zabbix

Задает контейнеру переменную окружения MYSQL_DATABASE

5

set container name zabbix-web-nginx-mysql port http source 80

Публикует порт 80 хоста для контейнера zabbix-web-nginx-mysql

6

set container name zabbix-web-nginx-mysql port http destination 8080

Перенаправляет опубликованный порт на порт 8080 контейнера

Полная конфигурация — пример настроек на основе официальной документации на систему Zabbix с поправкой на синтаксис команд ПО Факел:

set container network zabbix-net prefix 172.20.0.0/16
set container network zabbix-net description 'Network for Zabbix component containers'

set container name mysql-server image mysql:8.0
set container name mysql-server network zabbix-net

set container name mysql-server environment 'MYSQL_DATABASE' value 'zabbix'
set container name mysql-server environment 'MYSQL_USER' value 'zabbix'
set container name mysql-server environment 'MYSQL_PASSWORD' value 'zabbix_pwd'
set container name mysql-server environment 'MYSQL_ROOT_PASSWORD' value 'root_pwd'

set container name zabbix-java-gateway image zabbix/zabbix-java-gateway:alpine-5.2-latest
set container name zabbix-java-gateway network zabbix-net

set container name zabbix-server-mysql image zabbix/zabbix-server-mysql:alpine-5.2-latest
set container name zabbix-server-mysql network zabbix-net

set container name zabbix-server-mysql environment 'DB_SERVER_HOST' value 'mysql-server'
set container name zabbix-server-mysql environment 'MYSQL_DATABASE' value 'zabbix'
set container name zabbix-server-mysql environment 'MYSQL_USER' value 'zabbix'
set container name zabbix-server-mysql environment 'MYSQL_PASSWORD' value 'zabbix_pwd'
set container name zabbix-server-mysql environment 'MYSQL_ROOT_PASSWORD' value 'root_pwd'
set container name zabbix-server-mysql environment 'ZBX_JAVAGATEWAY' value 'zabbix-java-gateway'

set container name zabbix-server-mysql port zabbix source 10051
set container name zabbix-server-mysql port zabbix destination 10051

set container name zabbix-web-nginx-mysql image zabbix/zabbix-web-nginx-mysql:alpine-5.2-latest
set container name zabbix-web-nginx-mysql network zabbix-net

set container name zabbix-web-nginx-mysql environment 'MYSQL_DATABASE' value 'zabbix'
set container name zabbix-web-nginx-mysql environment 'ZBX_SERVER_HOST' value 'zabbix-server-mysql'
set container name zabbix-web-nginx-mysql environment 'DB_SERVER_HOST' value 'mysql-server'
set container name zabbix-web-nginx-mysql environment 'MYSQL_USER' value 'zabbix'
set container name zabbix-web-nginx-mysql environment 'MYSQL_PASSWORD' value 'zabbix_pwd'
set container name zabbix-web-nginx-mysql environment 'MYSQL_ROOT_PASSWORD' value 'root_pwd'

set container name zabbix-web-nginx-mysql port http source 80
set container name zabbix-web-nginx-mysql port http destination 8080

Список команд

Режим «Конфигурирование»


container name <name> image <image>

Описание:
Задает образ контейнера. Если реестр образов не указан, используются реестры из списка container registry (по умолчанию docker.io и quay.io), пока реестр не будет задан как часть имени образа.

Синтаксис:

  • set container name <name> image <image>

  • delete container name <name> image <image>

  • show container name <name> image

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <image> — имя образа в реестре образов, например mysql:8.0 или quay.io/mysql:8.0. Формат: строка до 255 символов ASCII.

Режим: «Конфигурирование».


container name <name> allow-host-networks

Описание:
Предоставляет контейнеру доступ к сетевому стеку хоста. Сетевой стек контейнера не изолирован от сетевого стека хоста, контейнер использует IP-адрес хоста. Команда транслируется в параметр --net host.

Синтаксис:

  • set container name <name> allow-host-networks

  • delete container name <name> allow-host-networks

  • show container name <name> allow-host-networks

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов.

Режим: «Конфигурирование».

Примечание

Параметр allow-host-networks не может быть использован совместно с параметром network.


container name <name> network <network>

Описание:
Подключает к контейнеру пользовательскую сеть. Можно указать только одну сеть; сеть должна быть предварительно создана командой container network.

Синтаксис:

  • set container name <name> network <network>

  • delete container name <name> network <network>

  • show container name <name> network

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <network> — имя сети. Формат: строка до 11 символов из латинских букв, цифр, дефисов и подчеркиваний.

Режим: «Конфигурирование».


container name <name> network <network> address <address>

Описание:
Задает контейнеру статический IPv4- или IPv6-адрес. Адрес должен принадлежать подсети, определенной префиксом указанной сети.

Синтаксис:

  • set container name <name> network <network> address <address>

  • delete container name <name> network <network> address <address>

  • show container name <name> network <network> address

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <network> — имя сети;

  • <address> — IP-адрес контейнера. Формат: IPv4-адрес (x.x.x.x) или IPv6-адрес (h:h:h:h:h:h:h:h). Можно задать несколько значений.

Режим: «Конфигурирование».

Примечание

Адрес первого хоста подсети (X.X.X.1) зарезервирован механизмом и не может быть использован.


container name <name> description <description>

Описание:
Задает текстовое описание контейнера.

Синтаксис:

  • set container name <name> description <description>

  • delete container name <name> description <description>

  • show container name <name> description

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <description> — описание. Формат: строка до 255 символов.

Режим: «Конфигурирование».


container name <name> environment <key> value <value>

Описание:
Добавляет контейнеру пользовательскую переменную окружения. Команда транслируется в параметр -e key=value. Можно задать несколько переменных.

Синтаксис:

  • set container name <name> environment <key> value <value>

  • delete container name <name> environment <key> value <value>

  • show container name <name> environment <key> value

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <key> — имя переменной окружения. Формат: строка из латинских букв, цифр, дефисов и подчеркиваний;

  • <value> — значение переменной. Формат: строка.

Режим: «Конфигурирование».


container name <name> port <port-name> source <port>

Описание:
Задает порт хоста, который публикуется для порта контейнера.

Синтаксис:

  • set container name <name> port <port-name> source <port>

  • delete container name <name> port <port-name> source <port>

  • show container name <name> port <port-name> source

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <port-name> — имя правила публикации порта;

  • <port> — порт или диапазон портов хоста. Формат: целое число от 1 до 65535 или диапазон start-end.

Режим: «Конфигурирование».


container name <name> port <port-name> destination <port>

Описание:
Задает порт контейнера, на который перенаправляется опубликованный порт хоста.

Синтаксис:

  • set container name <name> port <port-name> destination <port>

  • delete container name <name> port <port-name> destination <port>

  • show container name <name> port <port-name> destination

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <port-name> — имя правила публикации порта;

  • <port> — порт или диапазон портов контейнера. Формат: целое число от 1 до 65535 или диапазон start-end.

Режим: «Конфигурирование».


container name <name> port <port-name> protocol <protocol>

Описание:
Задает транспортный протокол опубликованного порта.

Синтаксис:

  • set container name <name> port <port-name> protocol <protocol>

  • delete container name <name> port <port-name> protocol <protocol>

  • show container name <name> port <port-name> protocol

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <port-name> — имя правила публикации порта;

  • <protocol> — протокол. Возможные значения: tcp — TCP; udp — UDP. Значение по умолчанию: tcp.

Режим: «Конфигурирование».


container name <name> volume <volume-name> source <path>

Описание:
Задает каталог хоста, который монтируется в контейнер.

Синтаксис:

  • set container name <name> volume <volume-name> source <path>

  • delete container name <name> volume <volume-name> source <path>

  • show container name <name> volume <volume-name> source

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <volume-name> — имя раздела;

  • <path> — каталог хоста. Формат: строка.

Режим: «Конфигурирование».


container name <name> volume <volume-name> destination <path>

Описание:
Задает каталог контейнера, в который монтируется каталог хоста.

Синтаксис:

  • set container name <name> volume <volume-name> destination <path>

  • delete container name <name> volume <volume-name> destination <path>

  • show container name <name> volume <volume-name> destination

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <volume-name> — имя раздела;

  • <path> — каталог контейнера. Формат: строка.

Режим: «Конфигурирование».


container name <name> volume <volume-name> mode <mode>

Описание:
Задает режим доступа к разделу.

Синтаксис:

  • set container name <name> volume <volume-name> mode <mode>

  • delete container name <name> volume <volume-name> mode <mode>

  • show container name <name> volume <volume-name> mode

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <volume-name> — имя раздела;

  • <mode> — режим доступа. Возможные значения: ro — только чтение; rw — чтение и запись. Значение по умолчанию: rw.

Режим: «Конфигурирование».


container name <name> restart <restart>

Описание:
Задает условие перезапуска контейнера при выходе.

Синтаксис:

  • set container name <name> restart <restart>

  • delete container name <name> restart <restart>

  • show container name <name> restart

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <restart> — условие перезапуска. Возможные значения: no — не перезапускать контейнер; on-failure — перезапускать контейнер, если получен ненулевой код выхода (количество попыток не ограничено); always — перезапускать контейнер вне зависимости от кода выхода (количество попыток не ограничено). Значение по умолчанию: on-failure.

Режим: «Конфигурирование».


container name <name> memory <memory>

Описание:
Ограничивает объем оперативной памяти (RAM) хоста, выделяемый контейнеру.

Синтаксис:

  • set container name <name> memory <memory>

  • delete container name <name> memory <memory>

  • show container name <name> memory

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <memory> — объем памяти в мегабайтах. Формат: целое число. Диапазон значений: от 0 до 16384; 0 — без ограничения. Значение по умолчанию: 512.

Режим: «Конфигурирование».


container name <name> device <device-name> source <path>

Описание:
Задает устройство хоста, которое монтируется в контейнер.

Синтаксис:

  • set container name <name> device <device-name> source <path>

  • delete container name <name> device <device-name> source <path>

  • show container name <name> device <device-name> source

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <device-name> — имя устройства;

  • <path> — устройство хоста, например /dev/x. Формат: строка.

Режим: «Конфигурирование».


container name <name> device <device-name> destination <path>

Описание:
Задает имя устройства внутри контейнера.

Синтаксис:

  • set container name <name> device <device-name> destination <path>

  • delete container name <name> device <device-name> destination <path>

  • show container name <name> device <device-name> destination

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <device-name> — имя устройства;

  • <path> — устройство в контейнере, например /dev/x. Формат: строка.

Режим: «Конфигурирование».


container name <name> capability <capability>

Описание:
Назначает контейнеру отдельные полномочия (capabilities) Linux.

Синтаксис:

  • set container name <name> capability <capability>

  • delete container name <name> capability <capability>

  • show container name <name> capability

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов;

  • <capability> — полномочие. Возможные значения: net-admin — сетевые настройки (сетевые интерфейсы, межсетевой экран, таблицы маршрутизации); net-bind-service — назначение сокета привилегированным портам (номера портов меньше 1024); net-raw — создание «сырых» (raw) сокетов; mknod — создание специальных файлов; setpcap — назначение уровней доступа (из привязанных или унаследованных наборов); sys-admin — администрирование (quotactl, mount, sethostname, setdomainame); sys-module — загрузка и выгрузка модулей ядра; sys-nice — изменение приоритета процессов; sys-time — установка системного времени. Можно задать несколько значений.

Режим: «Конфигурирование».


container name <name> disable

Описание:
Отключает контейнер.

Синтаксис:

  • set container name <name> disable

  • delete container name <name> disable

  • show container name <name> disable

Аргументы:

  • <name> — имя контейнера. Формат: строка из латинских букв, цифр и дефисов.

Режим: «Конфигурирование».


container network <network> prefix <prefix>

Описание:
Создает для контейнеров сеть с заданным именем и задает ее префикс.

Синтаксис:

  • set container network <network> prefix <prefix>

  • delete container network <network> prefix <prefix>

  • show container network <network> prefix

Аргументы:

  • <network> — имя сети. Формат: строка до 11 символов из латинских букв, цифр, дефисов и подчеркиваний;

  • <prefix> — префикс сети. Формат: IPv4-префикс (x.x.x.x/x) или IPv6-префикс (h:h:h:h:h:h:h:h/x). Можно задать несколько значений.

Режим: «Конфигурирование».


container network <network> description <description>

Описание:
Задает текстовое описание сети контейнеров.

Синтаксис:

  • set container network <network> description <description>

  • delete container network <network> description <description>

  • show container network <network> description

Аргументы:

  • <network> — имя сети. Формат: строка до 11 символов из латинских букв, цифр, дефисов и подчеркиваний;

  • <description> — описание. Формат: строка до 255 символов.

Режим: «Конфигурирование».


container registry <registry>

Описание:
Добавляет реестр образов в список неквалифицированных реестров для поиска образов. Для образа, имя которого не содержит явного указания на реестр, ПО Факел ищет его в реестрах из этого списка.

Синтаксис:

  • set container registry <registry>

  • delete container registry <registry>

  • show container registry

Аргументы:

  • <registry> — имя реестра образов, например quay.io. Значение по умолчанию: docker.io и quay.io.

Режим: «Конфигурирование».


Режим «Администрирование»


add container image <image>

Описание:
Извлекает новый образ контейнера из реестра.

Синтаксис:

  • add container image <image>

Аргументы:

  • <image> — имя образа.

Режим: «Администрирование».


container

Описание:
Отображает список всех контейнеров, в том числе остановленных.

Синтаксис:

  • show container

Режим: «Администрирование».


container json

Описание:
Отображает список всех контейнеров, в том числе остановленных, в формате JSON.

Синтаксис:

  • show container json

Режим: «Администрирование».


container image

Описание:
Отображает список всех образов, размещенных локально на диске устройства.

Синтаксис:

  • show container image

Режим: «Администрирование».


container image json

Описание:
Отображает список образов, размещенных локально на диске устройства, в формате JSON.

Синтаксис:

  • show container image json

Режим: «Администрирование».


container log <container>

Описание:
Отображает события, зарегистрированные в ходе работы выбранного контейнера.

Синтаксис:

  • show container log <container>

Аргументы:

  • <container> — имя контейнера.

Режим: «Администрирование».


container network

Описание:
Отображает список доступных для контейнеров сетей.

Синтаксис:

  • show container network

Режим: «Администрирование».


container network json

Описание:
Отображает список доступных для контейнеров сетей в формате JSON.

Синтаксис:

  • show container network json

Режим: «Администрирование».


restart container <container>

Описание:
Перезапускает выбранный контейнер.

Синтаксис:

  • restart container <container>

Аргументы:

  • <container> — имя контейнера.

Режим: «Администрирование».


update container image <container>

Описание:
Обновляет образ выбранного контейнера.

Синтаксис:

  • update container image <container>

Аргументы:

  • <container> — имя контейнера.

Режим: «Администрирование».


generate container image <image> path <path>

Описание:
Собирает образ контейнера на устройстве по файлу Dockerfile и присваивает образу указанное имя.

Синтаксис:

  • generate container image <image> path <path>

Аргументы:

  • <image> — имя (тег) образа контейнера;

  • <path> — путь к файлу Dockerfile.

Режим: «Администрирование».

Уровень привилегий: «Администратор».


connect container <container>

Описание:
Подключается к работающему контейнеру и открывает в нем интерактивную командную оболочку.

Синтаксис:

  • connect container <container>

Аргументы:

  • <container> — имя контейнера, настроенного командой container name.

Режим: «Администрирование».


delete container image <image>

Описание:
Удаляет образ контейнера с устройства.

Синтаксис:

  • delete container image <image>

Аргументы:

  • <image> — имя образа контейнера, загруженного на устройство. Значение all удаляет все образы.

Режим: «Администрирование».