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

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

Конфигурирование#

# set container name <name> image#

Данная команда позволяет задать имя образа в реестре образов.

set container name mysql-server image mysql:8.0

Если реестр образов не указан, в качестве него будет использован ресурс Docker.io до тех пор, пока реестр не будет явно указан с помощью команды set container registry <name> или пока реестр не будет задан как часть имени образа.

set container name mysql-server image quay.io/mysql:8.0
# set container name <name> allow-host-networks#

Данная команда позволяет обеспечить доступ контейнера к сетевому стеку хоста. Сетевой стек контейнера не изолирован от сетевого стека хоста и использует IP адрес хоста.

Следующие команды транслируются в команды с параметром --net host при работе с контейнерами.

Примечание

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

# set container name <name> network <networkname>#

Данная команда позволяет подключить к контейнеру пользовательскую сеть. При этом только одна сеть может быть указана в команде и она должна быть предварительно создана.

# set container name <name> network <networkname> address <address>#

Данная команда позволяет опционально задать статический IPv4 или IPv6 адрес для контейнера. Задаваемый адрес должен быть из подсети, определенной префиксом указанной в команде сети.

Примечание

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

# set container name <name> description <text>#

Данная команда позволяет задать текстовое описание для созданного контейнера.

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

Данная команда позволяет добавить для контейнера пользовательские переменные окружения. С помощью данной команды можно добавить несколько переменных окружения одновременно.

Следующие команды транслируются в команды с параметром -e key=value при работе с контейнерами.

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 <name> port <portname> source <portnumber>#
# set container name <name> port <portname> destination <portnumber>#
# set container name <name> port <portname> protocol <tcp | udp>#

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

set container name zabbix-web-nginx-mysql port http source 80
set container name zabbix-web-nginx-mysql port http destination 8080
set container name zabbix-web-nginx-mysql port http protocol tcp
# set container name <name> volume <volumename> source <path>#
# set container name <name> volume <volumename> destination <path>#

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

set container name coredns volume 'corefile' source /config/coredns/Corefile
set container name coredns volume 'corefile' destination /etc/Corefile
# set container name <name> volume <volumename> mode <ro | rw>#

Данная команда позволяет установить режим доступа к разделу (ro - только чтение, rw - чтение и запись), по умолчанию - ro.

# set container name <name> restart [no | on-failure | always]#

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

  • no - не перезапускать контейнер.

  • on-failure - перезапускать контейнер, если получено ненулевое

  • значение кода выхода (по умолчанию количество попыток перезапуска не ограничено).

  • always - перезапускать контейнер вне зависимости от значения

  • кода выхода (по умолчанию количество попыток перезапуска не ограничено).

# set container name <name> memory <MB>#

Данная команда позволяет ограничить объем оперативной памяти (RAM) хоста, выделяемый для контейнера. Значение по умолчанию составляет 512 Мбайт. Используйте значение 0 Мбайт, чтобы полностью снять ограничение.

# set container name <name> device <devicename> source <path>#
# set container name <name> device <devicename> destination <path>#

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

# set container name <name> cap-add <text>#

Данная команда позволяет назначить контейнеру определенные уровни доступа и полномочия. Для назначения доступны следующие варианты:

  • net-admin - сетевые настройки (сетевые интерфейсы, межсетевой экран, таблицы маршрутизации).

  • net-bind-service - назначение сокета привилегированным портам (номера портов меньше 1024).

  • net-raw - создание «сырых» (raw) сокетов.

  • setpcap - назначение уровней доступа (из привязанных или унаследованных наборов).

  • sys-admin - администрирование (использование утилит quotactl, mount, sethostname, setdomainame).

  • sys-time - установка системного времени.

# set container name <name> disable#

Данная команда позволяет отключить контейнер.

# set container network <networkname>#

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

# set container registry <name>#

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

Команды эксплуатационного режима#

$ add container image <containername>#

Данная команда позволяет извлечь новый образ для контейнера из реестра.

$ show container#

Данная команда позволяет вывести на экран список всех активных контейнеров.

$ show container image#

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

$ show container log <containername>#

Данная команда позволяет вывести на экран список событий, зарегистрированных в ходе работы выбранного контейнера.

$ show container network#

Данная команда позволяет вывести на экран список доступных для контейнера сетей.

$ restart container <containername>#

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

$ update container image <containername>#

Данная команда позволяет обновить образ выбранного контейнера.

Пример конфигурации#

Далее представлен пример настроек на основе официальной документации на систему 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