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

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление



Информация
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.


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

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

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

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

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

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

    Command
    chmod +x build-docker-image.sh

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

    Для запуска сценария требуется:

    Наличие установленных пакетов docker.io и debootstrap. Инструкцию по установке пакета docker.oi см. в статье Установка docker под Астра Linux. Пакет debootstrap можно установить командой
    1. :

      Command
      sudo apt install debootstrap
    Наличие полномочий sudo;
    В дальнейшем для

    1. Для запуска созданных образов без использования sudo

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

      Command
      sudo usermod -a -G docker $USER

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


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

    ПараметрНазначениеДопустимые значенияЗначение по умолчаниюCODENAMEИмя дистрибутива Astra Linux. Docker-образ будет создаваться из указанного дистрибутиваorel
    smolenskorelIMAGEИмя создаваемого Docker-образа 

    Имена могут содержать буквы нижнего регистра, цифры и разделители.
    Разделителями могут быть:

    • точка;
    • один или два символа подчеркивания;
    • одно или более тире (минус)

    Имя не может начинаться и оканчиваться разделителем.
    Подробнее см. Имена образов - расширенное описание.

    astra_linux_ce_2.12REPOАдрес репозитория, из которого будут загружаться пакеты для создания Docker-образа.Сетевой адрес HTTP-, HTTPS-, FTP-репозитория или имя каталога, содержащего репозиторий.https://dl.astralinux.ru/astra/stable/2.12_x86-64/repository

    Вызов сценария без параметров создаст образ Astra Linux CE 2.12 с именем astra_linux_ce_2.12. Для создания образа будет использован общедоступный репозиторий https://dl.astralinux.ru/astra/stable/2.12_x86-64/repository.

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

    Command
    CODENAME=orel IMAGE=orel-2.12-testing REPO=https://dl.astralinux.ru/astra/stable/2.12_x86-64/repository ./build-docker-image.sh

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

    Command
    CODENAME=orel IMAGE=orel-2.12-testing REPO=https://dl.astralinux.ru/astra/stable/2.12_x86-64/repository sudo -E ./build-docker-image.sh

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

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

    Создание образа и запуск созданного образа

    Как указано выше, для создания образа с принятым по умолчанию именем astra_linux_ce_2.12 пользователь, входящий в группу docker, может запустить сценарий без параметров:

    Command
    ./build-docker-image.sh

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

    Command
    docker run --rm -ti -v `pwd`:/work -w /work astra_linux_ce_2.12

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

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

    Command
    docker run --rm -ti -v `pwd`:/work -w /work orel-2.12-testing

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

    Представленный выше сценарий может быть доработан для кастомизации создаваемых образов. Для этого удобно использовать возможность выполнения команд внутри образа при создании образа. Образ создается командой 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

    Оглавление

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

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

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

    Command
    chmod +x build-docker-image.sh

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

    Для запуска сценария требуется:

    Наличие установленных пакетов docker.io и debootstrap. Инструкцию по установке пакета docker.oi см. в статье Установка docker под Астра Linux. Пакет debootstrap можно установить командой:

    Command
    sudo apt install debootstrap
    Наличие полномочий sudo;

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

    Command
    sudo usermod -a -G docker $USER

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

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

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

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

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

    ПараметрНазначениеДопустимые значенияЗначение по умолчаниюCODENAMEИмя дистрибутива Astra Linux. Docker-образ будет создаваться из указанного дистрибутиваorel
    smolenskorelIMAGEИмя создаваемого Docker-образа 

    Имена могут содержать буквы нижнего регистра, цифры и разделители.
    Разделителями могут быть:

    • точка;
    • один или два символа подчеркивания;
    • одно или более тире (минус)

    Имя не может начинаться и оканчиваться разделителем.
    Подробнее см. Имена образов - расширенное описание.

    astra_linux_ce_2.12REPOАдрес репозитория, из которого будут загружаться пакеты для создания Docker-образа.Сетевой адрес HTTP-, HTTPS-, FTP-репозитория или имя каталога, содержащего репозиторий.https://dl.astralinux.ru/astra/stable/orel/repository

    Вызов сценария без параметров создаст образ Astra Linux CE 2.12 с именем astra_linux_ce_2.12. Для создания образа будет использован общедоступный репозиторий https://dl.astralinux.ru/astra/stable/orel/repository.

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

    Command
    CODENAME=orel IMAGE=orel-2.12-testing REPO=./build-docker-image.sh -r https://dl.astralinux.ru/astra/testing/orelstable/2.12_x86-64/repository ./build-docker-image.sh -i ce212

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

    Command
    CODENAME=orel IMAGE=orel-2.12-testing REPO=

    sudo ./build-docker-image.sh -r https://dl.astralinux.ru/astra/

    testing/orel

    stable/2.12_x86-64/repository

    sudo -E ./build-docker-image.sh

    -i ce212


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

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

    Создание образа и запуск созданного образа

    Как указано выше, для создания образа с принятым по умолчанию именем astra_linux_ce_2.12 пользователь, входящий в группу docker, может запустить сценарий без параметров:

    Command./build-docker-image.sh

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

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

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

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

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

    Command
    docker run --rm -ti -v `pwd`:/work -w /work orel-2.12-testingce-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/stabletesting/2.12_x86-64/repository sudo ./build-docker.image.sh -r https://dl.astralinux.ru/astra/stable/2.12_x86-64/repository -i ce212