Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-01 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
Введение
В статье приводится пример создания инфраструктуры сетевой службы, работающей с разными классификационными метками с соблюдением изоляции потоков данных. Для запуска экземпляров службы используются непривилегированные docker-контейнеры (см. Установка и администрирование Docker в Astra Linux 1.7).
Подготовка docker-контейнера
Установка и настройка пакетов для подготовки docker-контейнеров
Далее в примере используется готовый образ Astra Linux Special Edition 1.7, доступный в docker-репозитории Astra Linux. Для его развертывания достаточно установить пакет docker.io:
Далее предполагается, что текущий пользователь включен в группу docker и все действия выполняются от его имени без использования sudo (см. Установка и администрирование Docker в Astra Linux 1.7). Включить текущего пользователя в группу можно командой:
Загрузка базового образа
Загрузить базовый образ из репозитория:
REPOSITORY TAG IMAGE ID CREATED SIZE registry.astralinux.ru/library/alse 1.7.3 83d2946f21f2 4 weeks ago 94.3MB
Создание контейнера службы
Контейнер службы создается из загруженного на предыдущем шаге базового образа registry.astralinux.ru/library/alse:1.7.3. В образ вносятся следующие изменения:
- Устанавливается пакет rabbitmq-server.
- Включается плагин rabbit-management.
- Создается пустой файл /etc/rabbitmq/rabbitmq.conf. Используемый минимальный docker-образ Astra Linux Special Edition не поддерживает МРД и МКЦ, и файл /etc/rabbitmq/rabbitmq.conf создается для устранения предупреждений;
- Изменяются принятые по умолчанию имя и пароль администратора службы rabbitmq (guest и guest). Для примера используются имя и пароль astra и astra. Изменения записываются в файл /etc/rabbitmq/rabbitmq.conf. Побочным эффектом изменения имени является разрешение доступа через web-интерфейс, что далее упрощает администрирование службы в docker-контейнере.
- Разрешается доступ к сетевым портами, используемым службой (опция EXPOSE). Полный список портов см. по ссылке https://www.rabbitmq.com/networking.html. Доступ открывается ко всем перечисленным в списке портам.
- Добавляется команда, выполняемая при запуске контейнера (опция ENTRYPOINT /usr/sbin/rabbitmq-server) – запуск службы.
Для создания контейнера службы:
Создать файл dockerfile со следующим содержимым:
FROM registry.astralinux.ru/library/alse:1.7.3 RUN apt update && apt install -y rabbitmq-server && rabbitmq-plugins enable rabbitmq_management RUN mkdir -p /etc/parsec/ RUN touch /etc/parsec/privsock.conf RUN echo "default_user = astra" >> /etc/rabbitmq/rabbitmq.conf RUN echo "default_pass = astra" >> /etc/rabbitmq/rabbitmq.conf RUN cat /etc/rabbitmq/rabbitmq.conf # https://www.rabbitmq.com/networking.html EXPOSE 1883 EXPOSE 4369 EXPOSE 5551-5552 EXPOSE 5671-5672 EXPOSE 6000-6500 EXPOSE 8883 EXPOSE 15671-15672 EXPOSE 15674-15675 EXPOSE 15692 EXPOSE 25672 EXPOSE 35672-35682 EXPOSE 61613-61614 ENTRYPOINT /usr/sbin/rabbitmq-server
Выполнить команду:
docker build -t astra-rabbitmq:latest -f dockerfile .В результате выполнения команды будет создан контейнер с именем astra-rabbitmq:latest.Проверить список контейнеров можно командой:
docker image lsПримерный вывод команды:REPOSITORY TAG IMAGE ID CREATED SIZE astra-rabbitmq latest bd6b882259b0 10 seconds ago 455MB registry.astralinux.ru/library/alse 1.7.3 83d2946f21f2 4 weeks ago 94.3MB
Запуск и проверка docker-контейнера
Запустить из созданного образа docker-контейнер службы командой:
Опции команды:
- -d — выполнение контейнера в фоновом режиме;
- -p — перенаправление сетевых портов. Указанные сетевые порты физического компьютера перенаправляются на порты docker-контейнера. Для упрощения примера используется минимальный набор портов, достаточный для первичной проверки работы;
- --n astra-rabbitmq — имя контейнера (astra-rabbitmq);
- astra-rabbitmq:latest — имя образа из которого запускается контейнер.
Для простейших проверок работоспособности контейнера можно выполнить следующие действия:
Убедиться, что сетевые порты перенаправлены:
sudo netstat -putln | grep docker-proxy
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN 8135/docker-proxy
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 8107/docker-proxy
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 8121/docker-proxyУбедиться, что контейнер запущен:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8bf47e60863a astra-rabbitmq:latest "/bin/sh -c /usr/sbi…" About a minute ago Up About a minute 1883/tcp, 4369/tcp, 5551-5552/tcp, 5671/tcp, 6000-6500/tcp, 8883/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 15674-15675/tcp, 0.0.0.0:15672->15672/tcp, 15692/tcp, 35672-35682/tcp, 61613-61614/tcp, 0.0.0.0:25672->25672/tcp astra-rabbitmqПодключиться к web-интерфейсу службы в контейнере (для входа использовать заданные ранее имя astra и пароль astra:
firefox http://127.0.0.1:15672/или, если пользовательская сессия не перезапускалась и переменным окружения не были присвоены значения:DISPLAY=:0 firefox http://127.0.0.1:15672/Выполнить в контейнере команду проверки текущего статуса службы:
docker exec astra-rabbitmq rabbitmqctl status
Экспорт образа для последующего использования
Экспортировать образ для последующего развертывания: