Astra linux docker image

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

Загрузить сценарий 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, после чего выполняется обновление. Вызов сценария с указанием дополнительного репозитория:

      Источник

      Создание собственного base-образа Docker с ОС Linux

      Обновлено

      Обновлено: 12.07.2022 Опубликовано: 09.04.2022

      Используемые термины: Docker, Операционная система. Для Docker мы можем найти большое количество готовых базовых образов на основе различных операционных систем. Но если нужного нам нет, то предусмотрен механизм создания своего собственного имиджа. Рассмотрим процесс подробнее на базе систем Astra Linux (Deb) и РЕД ОС (RPM).

      Предварительная подготовка

      Прежде чем начать, выполним следующие действия: 1. Развернуть систему, на которой мы будем делать образ. Нам подойдет виртуальная машина на любой системе виртуализации или контейнер Docker. Для Astra Linux лучше развернуть тот же дистрибутив и делать образ на нем, для РЕД ОС используем дистрибутив на основе Red Hat — CentOS. 2. Поставить на установленную систему Docker Engine. Подробнее в инструкции Установка Docker на Linux. После выполнения данных шагов, мы готовы переходить, непосредственно, к работам по созданию базовых образов. У нас есть на выбор 2 способа: с помощью специализированной утилиты или обычного архиватора tar. Рассмотрим оба варианта.

      Создание образа с помощью bootstrap

      Лучше всего использовать Debootstrap/Yumbootstrap. Данный инструмент позволяет установить базовую операционную систему в обычный каталог. Нам необходима данная процедура перед импортом чистой системы в Docker — это позволит убрать все лишнее и существенно снизить объем будущего образа. В нашем примере используются два принципиально разных дистрибутивов Linux. Рассмотрим процедуры по отдельности. У каждой есть свои тонкости, в чем-то проще Astra Linux, а в чем-то — РЕД ОС.

      Astra Linux

      debootstrap 1.7_x86-64 astra-folder https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/

      • 1.7_x86-64 — имя скрипта из каталога /usr/share/debootstrap/scripts для установки системы. Прежде чем запускать команду, стоит пройти по данному каталогу и найти имя нужного вам скрипта. Это одна из причин, почему стоит создавать docker-образ в той же системе — нужного нам скрипта может не оказаться (маловероятно, что скрипт для Astra Linux будет в Rocky Linux).
      • astra-folder — имя локального каталога, куда будет установлена система.
      • https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main — путь к репозиторию, откуда нужно взять базовые пакеты. Данная опция необязательна, однако в случае с Astra Linux, debootstrap пытается найти пакеты в репозиториях debian, что приводит к ошибке.

      Считаю важным рассказать про еще один нюанс, касающийся Astra Linux. В моем случае вышевведенная команда завершалась ошибкой из-за отсутствия некоторых файлов so. Чтобы решить проблему, во время ее выполнения нужно открыть второй сеанс консоли и скопировать файлы из системы в каталог установки, например:

      * в нашем случае это 2 файла — libparsec-base.so.3 и libparsec-aux.so.3.

      Утилита debootstrap загрузит минимальный набор пакетов с репозитория и выполнит установку системы в указанном нами каталоге.

      Если нужно доработать нашу систему — установить дополнительные пакеты или загрузить файлы, выполняем все действия относительно созданного каталога. В нашем примере:

      Теперь создаем образ для Docker:

      tar -C astra-folder -c . | docker import - astra-se1.7:base

      * где astra-folder — созданный каталог с установленной системой; astra-se1.7:base — название и версия образа.

      Готово. Посмотреть список образов можно командой:

      РЕД ОС

      Для yumbootstrap на момент обновления инструкции не было готового пакета RPM, однако, автор программного продукта позаботился, чтобы можно было легко собрать свой пакет.

      Но и тут есть нюанс — на системе РЕД ОС сборка не проходит, а сам пакет работает с ошибкой, поэтому мы и выбрали в качестве рабочей системы CentOS.

      Устанавливаем набор утилит:

      yum install rpm-build git make python-setuptools

      Перейдем в каталог, где будем выполнять сборку:

      git clone https://github.com/dozzie/yumbootstrap.git

      Переходим в загруженный каталог yumbootstrap:

      rpmbuild --rebuild yumbootstrap-*.src.rpm

      yum localinstall ~/rpmbuild/RPMS/noarch/yumbootstrap-*.el7.noarch.rpm

      Первый шаг сделан. Следующая проблема — для РЕД ОС нет описания создания образа в папку. Сами описания хранятся в каталоге /etc/yumbootstrap/suites. Мы можем посмотреть, как они выглядят и создать свой по аналогии. Что мы и сделаем.

      [post_install]
      finalize = scripts/fix_rpmdb.py
      finalize = scripts/clean_yumbootstrap.py

      [repositories]
      redos = https://repo1.red-soft.ru/redos/7.3/$basearch/os
      redos-updates = https://repo1.red-soft.ru/redos/7.3/$basearch/updates

      * обратите внимание, что наш файл подразумевает, что мы создаем образ для РЕД ОС версии 7.3.

      Теперь создаем файл со списком устанавливаемых пакетов:

      coreutils
      bash
      grep
      gawk
      basesystem
      rpm
      initscripts
      iproute
      less
      make
      mktemp
      vim-minimal
      yum
      chkconfig
      plymouth
      rootfiles
      redos-release

      * данный набор был взят из списка для centos7. Заменена строка centos-release на redos-release.

      -----BEGIN PGP PUBLIC KEY BLOCK-----
      Version: GnuPG v2.0.22 (GNU/Linux)

      mQENBFkemaABCADg8mX2EBmcmh+tu+rtQPPLiaDXjTZhQfJV6FwsrSYucMCfNBNL
      UYRMrcUNfXYjYvAtis9jwJCE+CGrJ1ir5cqttTGZu+hq7S1DGZjYR6VaflrwXVa9
      o//GsA7azDNpZ88LkyQ+u9BgiNY67jzQ4jdpUnSX9JLczVfoS31JH6Pb0UgtJtKf
      EoP60vOI+an7J4n7fVJYV/J37SKpECB2HIg0ODloHlm/8ISiMdYppusDLMD96nmy
      YW9LLddu5isFy9G9A7202Hj9oXziIF0I9+jv0lGqc2gGAQfgWypaUHdAONht9Xmr
      91T6YUJX/djbfCdyLGqwy1UO40QRB9bLYhsTABEBAAG0NlJFRCBTT0ZUIChSRUQg
      U09GVCBycG0gc2lnbiBrZXkpIDxzdXBwb3J0QHJlZC1zb2Z0LnJ1PokBOQQTAQIA
      IwUCWR6ZoAIbAwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEAtX8Wf4rBju
      J90IAJbxj1XnNoATbTcrI0wIUU6mNQsvU9Ag9UoLc01gy5JQffv9euecqnbxMEyr
      kMD51TFMjmlexjB2BBpsc3KzjISguOoT2Rwi6h0NzKQtlh4IvG13d+QNkjtxGRW5
      qOIW/I/plCRg5aZZLG4xEoVynzf1vMfJ/y4oTm5V8+DM2A3i6DORcUf8D+VZZnPB
      R9Z2U750u3sfdqKa+uEbA1tqZgk9TdRMmtxB328u8OTRt864g4mvmvJLUuAQ82vj
      NbfbdqCg9vKIqvth/m6OldcmHk6x0DDHK1Of9WONF37d6KUz+a68EiU9awulYagK
      UYq+i83Y4FPXiHAVvCjtPzwjjzi5AQ0EWR6ZoAEIALSgyev59CmBdB/aTotGHNGx
      ZnZ7skW4gUajlOfbH8OHQWwW+prlE+apSaSBo7mbMhf9LcXvPwVIGHzYWk32wYwh
      zXjt/NJwOo3SXTG4IUfTbwC3831MA6WjhWlXtBXypUpq3LcQkyOT0kzzIrw0hPxC
      DlpJerWAEKxJcgfu41C4mfq28Oay1JutNWT45lDSRzZA3PaVUpb2bQ7ohplF9E9H
      VejsvTEhgSdyJh301KaqyMvTmaZpFZaiy7GjV18GI/fGfFZM4kENkcUp37GC1f64
      NjgLYntgQ/vplL3dTO1tNV0nAbWtZO64Mg5Gbme0dt97BJicgmJXlZJrqKtMV80A
      EQEAAYkBHwQYAQIACQUCWR6ZoAIbDAAKCRALV/Fn+KwY7t/YCADOlIVdMYNlrEPB
      Mn6U+IbVHuEStaZfnRYjur9XDCyWEI965yN1/UJ40aH4jHlG2Y0Ka7Vep6uP0Zto
      Q0gAHcn+CI38YBegnjs9pomUSopDm3L7jx7hVKRr0z6b0gPEKUXSWxaLa9f0/k6/
      DY3kVSvxF8cdY9jstVQuGeC04dfZdJKDyc0ZXNKd6WC+ABLiI0+Vk08xrWR81H8T
      B4gFLG0U0EMNkjq5u8sygCL7YL0/YebaiMSDtSuSX2JXnkDDwThQ6p2Fas4Csmxm
      7OvuZQIYYZUgurPbRsMYDHiDA8jhCEkpxxnz5RMMF0/9sUXtcvnU3sPdGObHg1tY
      +ulLukIs
      =QS0H
      -----END PGP PUBLIC KEY BLOCK-----

      * содержимое для данного файла мне не удалось найти и Интернете, поэтому я установил РЕД ОС нужной версии, и посмотрел последовательность в файле /etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT. Данная последовательность может быть не актуальной, поэтому вам может понадобиться проделать ту же операцию.

      Мы готовы, чтобы запустить процесс создания образа в каталоге. Вводим команду:

      yumbootstrap redos-7.3 redos-folder

      * где redos-7.3 — имя созданного нами suite-файла; redos-folder — каталог, куда будет развернута наша система.

      Утилита yumbootstrap загрузит набор пакетов, указанных в файле redos-7.3.list и выполнит установку системы в указанный нами каталог.

      Если нужно доработать нашу систему — установить дополнительные пакеты или загрузить файлы, выполняем все действия относительно созданного каталога. В нашем примере:

      После работы, не забываем выйти из окружения chroot:

      Теперь создаем образ для Docker:

      tar -C redos-folder -c . | docker import - redos-7.3:base

      * где redos-folder — созданный каталог с установленной системой; redos-7.3:base — название и версия образа.

      Готово. Посмотреть список образов можно командой:

      Для запуска контейнера на основе образа вводим:

      docker run -it --rm redos-7.3:base bash

      Создание образа с помощью tar

      В инструкции был рассмотрен способ с правильной подготовкой образа и использованием его. Если есть причина не использовать инструмент Debootstrap/Yumbootstrap, то можно создать более грубый образ с использованием tar. Такой образ будет иметь, куда, больший размер, но в некоторых случаях это может быть не принципиально.

      Работа должна выполняться в системе, из которой мы сделаем образ. Набор команд одинаковый и не зависит от дистрибутива Linux, поэтому мы рассмотрим его только для Astra Linux. При желании, мы можем заранее установить необходимые инструменты или наоборот, чтобы образ занимал меньше места, удалить некоторые пакеты и файлы.

      tar --numeric-owner --exclude=/proc --exclude=/sys -cf astra-base.tar /

      * где astra-base.tar будет именем tar-файла с нашей системой. В него попадет содержимое всех каталогов, кроме /proc и /sys.

      cat astra-base.tar | docker import - astra-se1.7:1

      * где astra-base.tar — созданный тарбол; astra-se1.7:1 — имя образа, который будет создан.

      Мы должны увидеть что-то на подобие:

      REPOSITORY TAG IMAGE ID CREATED SIZE
      astra-se1.7 1 0998166e59a1 57 seconds ago 993MB

      Читайте также

      Вам также может оказаться полезным:

      Источник

      Создание 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 мегабайта.

      Источник

      Читайте также:  Virtual usb port linux
Оцените статью
Adblock
detector