Astra linux orel docker

Как получить Docker образ астралинукса CE?

надеюсь, вы понимаете, что программа linux будет той же самой, что и в используемой вами хост-системе, и если запускаемому вами процессу требуется, к примеру, та же «доверенная загрузка» именно в той реализации, которая вкомпилирована в программу linux из дистрибутива astra, то правильно функционировать он не будет.

техническое

как и для любого дистрибутива, надо создать минимальный chroot и из него — образ:

$ sudo tar -C каталог-с-chroot-ом -c . | docker import - название-образа 

создать chroot , как и для любого основанного на debian gnu/linux дистрибутива, можно с помощью скрипта debootstrap (входит в одноимённый пакет во многих, даже не основанных на debian gnu/linux, дистрибутивах):

$ sudo debootstrap выпуск каталог-где-будет-создан-chroot ссылка-на-репозиторий 

docker-овцами подготовлен скрипт-обёртка вокруг debootstrap. там делаются docker-специфичные оптимизации, но основную работу, конечно, выполняет сам оригинальный скрипт:

$ wget https://github.com/moby/moby/raw/master/contrib/mkimage/debootstrap 

в качестве выпуска надо указать orel . нужный для debootstrap конфигурационный файл можно взять непосредственно из пакета debootstrap из репозитория дистрибутива — https://mirror.yandex.ru/astra/current/orel/repository/pool/main/d/debootstrap/

для удобства

набросал (на основе используемой в работе) программку для gnu make. запускать её имеет смысл только на debian-основных дистрибутивах (используется программа dpkg-deb), должен быть установлен пакет debootstrap:

suite = orel repo = http://mirror.yandex.ru/astra/current/$(suite)/repository deblink = $(shell wget -qO - $(repo)/dists/$(suite)/main/binary-amd64/Packages.gz | zcat | sed -rn '/^Package: debootstrap$$/,/^Filename:/') debname = $(notdir $(deblink)) script = debootstrap scriptlink = https://github.com/moby/moby/raw/master/contrib/mkimage/$(script) suiteconf = /usr/share/debootstrap/scripts/$(suite) all: $(suite).hash $(suiteconf): $(debname) dpkg-deb -x $ < undeb sudo cp undeb$@ $@ $(debname): wget -qO $@ $(repo)/$(deblink) $(suite).hash: $(suite) sudo tar -C $< -c . | sudo docker import - $< >$@ @echo "готово" $(suite): $(script) if [ -d $@ ]; then sudo rm -rf $@; fi LC_ALL=C sudo bash $< $@ $(notdir $@) $(repo) $(script): $(suiteconf) wget -q $(scriptlink) -O $@ 

в результате её работы будет создан docker-образ с именем orel :

$ sudo docker run -it --rm orel cat /etc/os-release PRETTY_NAME="Astra Linux (Orel 2.11.6)" NAME="Astra Linux (Orel)" ID=astra ID_LIKE=debian ANSI_COLOR="1;31" HOME_URL="http://www.astra-linux.com/" SUPPORT_URL="http://www.astra-linux.com/support" VARIANT_ID=orel VARIANT=Orel VERSION_ID=2.11.6 

всё, что будет создано скриптом в текущем каталоге (и конфигурационный файл /usr/share/debootstrap/scripts/orel ), после создания образа можно удалять.

Читайте также:  Создания загрузочного образа linux

Источник

Создание Docker образа Astra Linux

Образ дистрибутива Astra Linux, как и любого дистрибутива, основанного на Debian, создаётся в три этапа:

1)Выполняется сборка chroot-окружения с помощью debootstrap;

2)Выполняется настройка chroot-окружения;

3)Полученное chroot-окружение конвертируется в образ Docker.

Сборка chroot-окружения

Сборка производится с помощью команды debootstrap:

 debootstrap --variant=minbase --include locales,lsb-release --components=main,contrib,non-free orel /var/astra-chroot http://dl.astralinux.ru/astra/stable/2.12_x86-64/repository 

Данная команда создаст chroot-окружение ОС Astra Linux “Орёл”.

Настройка chroot-окружения

Настройка созданного образа осуществляется посредством входа в chroot-окружение с помощью команды chroot:

 echo "ru_RU.UTF-8 UTF-8" >> /etc/locale.gen echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen locale-gen update-locale ru_RU.UTF-8 

Хорошим тоном при создании образов Docker является максимальное уменьшение его размера. Очистка кэша apt наиболее значительно уменьшает размеры итогового образа и не влияет на функциональность образа:

 apt update mv /etc/apt/sources.list.bak /etc/apt/sources.list apt-get autoclean apt clean 

Создание образа Docker

 tar -C /var/astra-chroot -cpf - . |docker import\ - astralinux:orel\ --change "ENV PATH /usr/local/sbin:/usr/local/bin\  :/usr/sbin:/usr/bin:/sbin:/bin"\ --change 'CMD ["/bin/bash"]'\ --change "ENV LANG=ru_RU.UTF-8" 

В результате будет создан образ с российской локализацией и точкой входа в bash. Итоговый размер образа – 204 мегабайта.

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

      . docker build --network=host --no-cache=true -t "$IMAGE" - 
      

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

      . docker build --network=host --no-cache=true -t "$IMAGE" - 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, после чего выполняется обновление. Вызов сценария с указанием дополнительного репозитория:

      Источник

Оцените статью
Adblock
detector