Встроенные контейнеры#
ПО Факел использует встроенный механизм контейнеризации без фоновых процессов.
Конфигурирование#
- # 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