Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1
- Astra Linux Common Edition 2.12
Загрузка сценария
Загрузить сценарий build-docker-image.sh и сохранить в текущем каталоге в файле с именем build-docker-image.sh.
Разрешить выполнение сценария:
Запуск и работа сценария создания Docker-образов Astra Linux
Для запуска сценария требуется:
Наличие установленных пакетов docker.io и debootstrap. Инструкцию по установке пакета docker.oi см. в статье Установка docker под Астра Linux. Пакет debootstrap можно установить командой:
sudo apt install debootstrapНаличие полномочий sudo;
В дальнейшем для запуска созданных образов без использования sudo понадобится участие в группе docker. Добавить текущего пользователя в группу docker можно выполнив команду:
sudo usermod -a -G docker $USERпосле чего перезапустить пользовательскую сессию.
Используемые параметры:
Параметр | Назначение | Допустимые значения | Значение по умолчанию |
---|---|---|---|
CODENAME | Имя дистрибутива Astra Linux. Docker-образ будет создаваться из указанного дистрибутива | orel smolensk | orel |
IMAGE | Имя создаваемого Docker-образа | Имена могут содержать буквы нижнего регистра, цифры и разделители.
Имя не может начинаться и оканчиваться разделителем. | astra_linux_ce_2.12 |
REPO | Адрес репозитория, из которого будут загружаться пакеты для создания 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, может использовать следующую команду:
При выполнении сценария:
- Создаются временные файлы в каталоге /tmp;
- Фактически создаются два образа:
- Базовый образ с именем, заданным при запуске сценария, дополненным суффиксом -rootfs;
- Рабочий образ с именем, заданным при запуске сценария;
- Ранее созданные одноименные образы, если таковые существуют, удаляются автоматически.
Создание образа и запуск созданного образа
Как указано выше, для создания образа с принятым по умолчанию именем astra_linux_ce_2.12 пользователь, входящий в группу docker, может запустить сценарий без параметров:
Образ, созданный в примере выше из репозитория 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, после чего выполняется обновление. Вызов сценария с указанием дополнительного репозитория:
Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1
- Astra Linux Common Edition 2.12
Загрузка сценария
Загрузить сценарий build-docker-image.sh и сохранить в текущем каталоге в файле с именем build-docker-image.sh.
Разрешить выполнение сценария:
Запуск и работа сценария создания Docker-образов Astra Linux
Для запуска сценария требуется:
Наличие установленных пакетов docker.io и debootstrap. Инструкцию по установке пакета docker.oi см. в статье Установка docker под Астра Linux. Пакет debootstrap можно установить командой:
sudo apt install debootstrapНаличие полномочий sudo;
В дальнейшем для запуска созданных образов без использования sudo понадобится участие в группе docker. Добавить текущего пользователя в группу docker можно выполнив команду:
sudo usermod -a -G docker $USERпосле чего перезапустить пользовательскую сессию.
Используемые параметры:
Параметр | Назначение | Допустимые значения | Значение по умолчанию |
---|---|---|---|
CODENAME | Имя дистрибутива Astra Linux. Docker-образ будет создаваться из указанного дистрибутива | orel smolensk | orel |
IMAGE | Имя создаваемого Docker-образа | Имена могут содержать буквы нижнего регистра, цифры и разделители.
Имя не может начинаться и оканчиваться разделителем. | astra_linux_ce_2.12 |
REPO | Адрес репозитория, из которого будут загружаться пакеты для создания 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, может использовать следующую команду:
При выполнении сценария:
- Создаются временные файлы в каталоге /tmp;
- Фактически создаются два образа:
- Базовый образ с именем, заданным при запуске сценария, дополненным суффиксом -rootfs;
- Рабочий образ с именем, заданным при запуске сценария;
- Ранее созданные одноименные образы, если таковые существуют, удаляются автоматически.
Создание образа и запуск созданного образа
Как указано выше, для создания образа с принятым по умолчанию именем astra_linux_ce_2.12 пользователь, входящий в группу docker, может запустить сценарий без параметров:
Образ, созданный в примере выше из репозитория 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, после чего выполняется обновление. Вызов сценария с указанием дополнительного репозитория: