Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Оглавление



Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Common Edition 2.12

Для Astra Linux Special Edition 1.7 см. Создание собственного образа Astra Linux для использования в Docker.


Подготовка к работе

  1. Установить пакет docker.io:
    1. При работе в Astra Linux Special Edition 1.6 установить пакеты docker в соответствии с инструкцией Установка и настройка Docker docker в Astra Астра Linux 1.6 и 2.12.
    2. При работе в Astra Linux Common Edition установить пакет docker.io из репозитория Astra Linux Common Edition.
  2. Установить пакет debootstrap:

    Command
    sudo apt install debootstrap


  3. Для запуска созданных образов без использования sudo добавить текущего пользователя в группу docker. Это можно сделать выполнив команду:

    Command
    sudo usermod -a -G docker $USER

    после чего перезапустить пользовательскую сессию. 

Загрузка сценария

Загрузить сценарий build-docker-image.sh и сохранить в текущем каталоге в файле с именем build-docker-image.sh.

Разрешить выполнение сценария:

Command
chmod +x build-docker-image.sh

Запуск и работа сценария создания Docker-образов Astra Linux

Используемые параметры:

  • Обязательные:
    • -r <путь_к_репозиторию> — путь к репозиторию, из которого будет выполняться сборка образа;
    • -i <имя_образа> — имя файла с собранным образом;
  • Необязательные: 
    • -c <имя_дистрибутива> — имя собираемого дистрибутива (должно находиться в каталоге dists указанного репозитория);
    • -b — установка только базовых пакетов;
    • -v — вывести версию сценария;

Вызов сценария без параметров покажет список параметров.

Так, например, для создания образа Astra Linux CE 2.12 пользователь, входящий в группу docker, может использовать следующую команду:

Command
./build-docker-image.sh -r https://dl.astralinux.ru/astra/stable/2.12_x86-64/repository -i ce212

или вариант команды с использованием sudo:

Command

sudo ./build-docker-image.sh -r https://dl.astralinux.ru/astra/stable/2.12_x86-64/repository -i ce212


При выполнении сценария:

  • Создаются временные файлы в каталоге /tmp;
  • Фактически создаются два образа:
    • Базовый образ с именем, заданным при запуске сценария, дополненным суффиксом -rootfs;
    • Рабочий образ с именем, заданным при запуске сценария;
  • Ранее созданные одноименные образы, если таковые существуют, удаляются автоматически.

Запуск созданного образа

Пользователь, входящий в группу docker может запустить собранный образ (образ с именем astra_linux_ce_2.12) командой:

Command
docker run --rm -ti -v `pwd`:/work -w /work ce-212

при этом текущий каталог будет смонтирован в каталог /work запускаемого образа.

Образ, созданный в примере выше из репозитория testing, может быть запущен командой:

Command
docker run --rm -ti -v `pwd`:/work -w /work ce-212

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

Представленный выше сценарий может быть доработан для кастомизации создаваемых образов. Для этого удобно использовать возможность выполнения команд внутри образа при создании образа. Образ создается командой docker build. В предложенном выше сценарии выполняется только одна команда RUN apt-get update:

Блок кода
...
docker build --network=host --no-cache=true -t "$IMAGE" - <<EOF
FROM $ROOTFS_IMAGE
ENV TERM xterm-256color
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update
WORKDIR /
CMD bash
EOF
...

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

Блок кода
...
docker build --network=host --no-cache=true -t "$IMAGE" - <<EOF
FROM $ROOTFS_IMAGE
ENV TERM xterm-256color
ENV DEBIAN_FRONTEND noninteractive RUN echo "deb $REPO   $CODENAME contrib main non-free" >  etc/apt/sources.list
RUN [ -z $UPDATE ] || echo "deb $UPDATE $CODENAME contrib main non-free" >> etc/apt/sources.list
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
RUN apt-get dist-upgrade -y
RUN apt-get -f install -y
WORKDIR /
CMD bash
EOF
...

Обновления устанавливаются из репозитория, передаваемого через значение переменной окружения UPDATE. Указанный репозиторий добавляется в список репозиториев пакетов в файле /etc/apt/sources.list, после чего выполняется обновление. Вызов сценария с указанием дополнительного репозитория:

Command
UPDATE=https://dl.astralinux.ru/astra/testing/2.12_x86-64/repository sudo ./build-docker.image.sh -r https://dl.astralinux.ru/astra/stable/2.12_x86-64/repository -i ce212