Документация: ПО Факел — разрабатываемая версия
Встроенные контейнеры¶
Обзор¶
ПО Факел использует встроенный механизм контейнеризации без фоновых процессов.
Встроенные контейнеры позволяют запускать на маршрутизаторе дополнительные приложения, например агент или сервер системы мониторинга, в изолированной среде. Каждый контейнер создается из образа и работает со своей файловой системой, переменными окружения и сетевыми параметрами.
Контейнеры настраиваются в разделе 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 |
Создает для контейнеров сеть |
2 |
set container name mysql-server image |
Создает контейнер |
3 |
set container name mysql-server network zabbix-net |
Подключает контейнер |
4 |
set container name mysql-server environment MYSQL_DATABASE value |
Задает контейнеру переменную окружения |
5 |
set container name zabbix-web-nginx-mysql port http source |
Публикует порт 80 хоста для контейнера |
6 |
set container name zabbix-web-nginx-mysql port http destination |
Перенаправляет опубликованный порт на порт 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¶
--net host.Синтаксис:
set container name
<name>allow-host-networksdelete container name
<name>allow-host-networksshow 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>¶
Синтаксис:
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>¶
Синтаксис:
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>¶
Синтаксис:
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>disabledelete container name
<name>disableshow 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¶
Синтаксис:
show container json
Режим: «Администрирование».
container image¶
Синтаксис:
show container image
Режим: «Администрирование».
container image json¶
Синтаксис:
show container image json
Режим: «Администрирование».
container log <container>¶
Синтаксис:
show container log
<container>
Аргументы:
<container>— имя контейнера.
Режим: «Администрирование».
container network¶
Синтаксис:
show container network
Режим: «Администрирование».
container network 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>¶
Синтаксис:
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удаляет все образы.
Режим: «Администрирование».