Контейнеры#

Поддерживаются образы следующих типов:

  • Standard – базовая ОС Astra Linux Special Edition и стандартные утилиты из базовой системы.

  • Multi-service (init) – базовая ОС Astra Linux Special Edition с системой инициализации systemd.

  • Service – базовая ОС Astra Linux Special Edition с установленным сетевым сервисом.

  • Dev – базовая ОС Astra Linux Special Edition и окружение для одного из языков программирования.

Поддерживаются следующие сетевые сервисы:

  • Apache2;

  • DinD (Docker in Docker);

  • Dotnet sdk (.NET SDK);

  • HaProxy;

  • MariaDB;

  • Memcached;

  • MySQL;

  • Nginx;

  • Podman;

  • PostgreSQL;

  • RabbitMQ;

  • Redis.

Поддерживаются следующие языки программирования (в примере указаны версии из базовых репозиториев):

  • C++;

  • Erlang;

  • Go;

  • NodeJS;

  • OpenJDK;

  • Perl;

  • PHP;

  • Python;

  • Ruby;

  • Rust.

Базовый образ Standard собирается с помощью Packer в один слой.

Все остальные образы собираются через заранее написанные Dockerfile на базе образа Standard.

Примечание

Образ Minimal находится в разработке.

../../../_images/ubi_images.svg

Тегирование образов#

Для образов определены теги вида:

  • latest – назначается на самую новую версию ОС и самый новый релиз. Например, если тег не указан при выполнении команды podman pull, будет загружена версия с тегом latest.

  • X.Y – назначается на самую новую мажорную версию ОС и самый новый релиз. Он соответствует тегу latest, если для ОС существует только одна мажорная версия. Если ОС имеет несколько мажорных версий, то тегов будет по количеству этих версий, и каждый из них будет указывать на самый новый релиз для этой версии ОС.

  • X.Y.Z – назначается на самую новую версию ОС и самый новый релиз. Тег перемещается с очередным релизом.

  • X.Y.Z-mgA.B.C – назначается на определенные версии ОС и релиз. Назначается единожды и всегда указывает на конкретный образ.

Примеры работы с образами UBI#

Скачивание образа astra/ubi17:1.7.3#

podman pull registry.astralinux.ru/library/astra/ubi17:1.7.3

Запуск контейнера с astra/ubi17:1.7.5 в фоновом режиме с прикрепленным томом#

podman run -d \
   --name alse_volume \
   --mount type=bind,source="$(pwd)"/data,target=/usr/data \
   registry.astralinux.ru/library/astra/ubi17:1.7.5 \
   /bin/sh -c 'while true; do sleep 10; done'

Примечание

Каталог data/ должен существовать.

Запуск контейнера astra/ubi18:latest в интерактивном режиме c удалением контейнера по завершению#

podman run -it --rm \
   --name alse_mg \
   registry.astralinux.ru/library/astra/ubi18:latest \
   /bin/bash

Запуск контейнера astra/ubi17:1.7.5-mg13.1.2 в фоновом режиме#

podman run -d \
   --name alse_mg  \
   registry.astralinux.ru/library/astra/ubi17:1.7.5-mg13.1.2 \
   /bin/sh -c 'while true; do sleep 10; done'

Запуск контейнера ubi18-postgresql15#

  1. Создайте том для хранения данных:

    docker volume create postgresql15
    
    podman volume create postgresql15
    
  2. Запустите контейнер с автоматическим удалением после остановки (данные, расположенные в томе, остаются на хостовой системе):

    docker run -d \
    --rm \
    --name postgresql15 \
    -e POSTGRES_PASSWORD=yoursecretpassword \
    -e PGDATA=/var/lib/postgresql/15/main \
    -v postgresql15:/var/lib/postgresql/15/main \
    -p 5432:5432 \
    registry.astralinux.ru/library/astra/ubi18-postgresql15:latest
    
    podman run -d \
    --rm \
    --name postgresql15 \
    -e POSTGRES_PASSWORD=yoursecretpassword \
    -e PGDATA=/var/lib/postgresql/15/main \
    -v postgresql15:/var/lib/postgresql/15/main \
    -p 5432:5432 \
    registry.astralinux.ru/library/astra/ubi18-postgresql15:latest
    
  3. Подключитесь к БД:

    docker exec -it postgresql15 psql
    
    podman exec -it postgresql15 psql
    

Использование docker/podman secrets для контейнера ubi18-postgresql15#

  1. Инициализируйте кластер (только для docker):

    docker swarm init
    
  2. Создайте секрет:

    echo "yoursecretpassword" | docker secret create postgres-passwd -
    
    echo "yoursecretpassword" | podman secret create postgres-passwd -
    
  3. Запустите контейнер с подключением секрета:

    docker service create \
    --name postgresql15 \
    --secret postgres-passwd \
    -e POSTGRES_PASSWORD=/run/secrets/postgres-passwd \
    -e PGDATA=/var/lib/postgresql/15/main \
    -p 5432:5432 \
    registry.astralinux.ru/library/astra/ubi18-postgresql15:latest
    
    podman run -d \
    --name postgresql15 \
    --secret postgres-passwd \
    -e POSTGRES_PASSWORD=/run/secrets/postgres-passwd \
    -e PGDATA=/var/lib/postgresql/15/main \
    -v postgresql15:/var/lib/postgresql/15/main \
    -p 5432:5432 \
    registry.astralinux.ru/library/astra/ubi18-postgresql15:latest
    
  4. Подключитесь к БД:

    docker exec -it postgresql15.$TASK_NUMBER.$TASK_ID psql
    

    Здесь:

    • $TASK_NUBMER – номер задачи;

    • $TASK_ID – идентификатор задачи.

    Вместо $TASK_NUBMER и $TASK_ID необходимо указать их фактические значения. Узнать их можно в выводе следующей команды:

    docker ps -a | grep postgresql15
    
    podman exec -it postgresql15 psql