Дерево страниц

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

Версия 1 Следующий »

Данная статья применима к:

  • 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:

sudo apt install -y docker.io
Можно также использовать собственные образы, см. Создание Docker-образов Astra Linux.

Далее предполагается, что текущий пользователь включен в группу docker и все действия выполняются от его имени без использования sudo (см. Установка и администрирование Docker в Astra Linux 1.7). Включить текущего пользователя в группу можно командой:

sudo usermod -aG docker $USER
Для начала действия включения пользователя в группу обычно рекомендуется перезапустить пользовательскую сессию. В целях тестирования актуализировать включение пользователя в группу можно следующими командами (команда действуют только на активный терминал, для выполнения понадобится ввести пароль пользователя):
exec su - $USER
Если пользовательская сессия не перезапускалась, то для последующего корректного запуска графических приложений желательно установить значения переменных окружения:
export DISPLAY=:0 HOME=/home/$USER HOSTNAME=`hostname`

Загрузка базового образа

Загрузить базовый образ из репозитория:

docker pull registry.astralinux.ru/library/alse:1.7.3
Проверить загруженный образ:
docker image ls

Пример вывода команды:
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. В образ вносятся следующие изменения:

  1. Устанавливается пакет rabbitmq-server.
  2. Включается плагин rabbit-management.
  3. Создается пустой файл /etc/rabbitmq/rabbitmq.conf. Используемый минимальный docker-образ Astra Linux Special Edition не поддерживает МРД и МКЦ, и файл /etc/rabbitmq/rabbitmq.conf создается для устранения предупреждений;
  4. Изменяются принятые по умолчанию имя и пароль администратора службы rabbitmq (guest и guest). Для примера используются имя и пароль astra и astra. Изменения записываются в файл /etc/rabbitmq/rabbitmq.conf. Побочным эффектом изменения имени является разрешение доступа через web-интерфейс, что далее упрощает администрирование службы в docker-контейнере.
  5. Разрешается доступ к сетевым портами, используемым службой (опция EXPOSE). Полный список портов см. по ссылке https://www.rabbitmq.com/networking.html. Доступ открывается ко всем перечисленным в списке портам.
  6. Добавляется команда, выполняемая при запуске контейнера (опция ENTRYPOINT /usr/sbin/rabbitmq-server) – запуск службы.

Для создания контейнера службы:

  1. Создать файл 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
  2. Выполнить команду:

    docker build -t astra-rabbitmq:latest -f dockerfile .
    В результате выполнения команды будет создан контейнер с именем astra-rabbitmq:latest.

  3. Проверить список контейнеров можно командой:

    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-контейнер службы командой:

docker run -d -p 5672:5672 -p 15672:15672 -p 25672:25672 --name astra-rabbitmq astra-rabbitmq:latest

Опции команды:

  • -d — выполнение контейнера в фоновом режиме;
  • -p — перенаправление сетевых портов. Указанные сетевые порты физического компьютера перенаправляются на порты docker-контейнера. Для упрощения примера используется минимальный набор портов, достаточный для первичной проверки работы;
  • --n astra-rabbitmq — имя контейнера (astra-rabbitmq);
  •  astra-rabbitmq:latest — имя образа из которого запускается контейнер.

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

  1. Убедиться, что сетевые порты перенаправлены:

    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   

  2. Убедиться, что контейнер запущен:

    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

  3. Подключиться к web-интерфейсу службы в контейнере (для входа использовать заданные ранее имя astra и пароль astra:

    firefox http://127.0.0.1:15672/
    или, если пользовательская сессия не перезапускалась и переменным окружения не были присвоены значения:
    DISPLAY=:0 firefox http://127.0.0.1:15672/

  4. Выполнить в контейнере команду проверки текущего статуса службы:

    docker exec astra-rabbitmq rabbitmqctl status

Экспорт образа для последующего использования

Экспортировать образ для последующего развертывания:

docker save astra-rabbitmq:latest -o astra-rabbitmq.tar

Развертывание службы в docker-контейнерах

Отдельная служба, работающая с нулевой классификационной меткой

Настройка docker-контейнера как службы systemd

Комплект служб, работающих с разными классификационными метками

Тестирование структуры приложений RabbitMQ в  docker-контейнерах

Кластер RabbitMQ в docker-контейнерах

Кластер, работающий с нулевой классификационной меткой

Комплект служб, работающих с разными классификационными метками

  • Нет меток