Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
- Astra Linux Common Edition 2.12.35
Установка пакетов
Установить пакеты, необходимые для создания собственных образов Docker, можно либо с помощью графического менеджера пакетов либо из командной строки командой:
Создание собственного образа
Собственный образ создаётся в три этапа:
- Выполняется сборка chroot-окружения;
- Выполняется настройка chroot-окружения;
- Полученное chroot-окружение конвертируется в образ Docker.
- Сборка chroot-окружения выполняется командой debootstrap:
Если каталоги репозиториев доступны по сети, то загрузка пакетов для сборки может выполняться непосредственно из этих сетевых репозиториев, например, для Astra Linux Special Edition - из общедоступного сетевого репозитория. В примерах ниже chroot-окружение Astra Linux создаётся в подкаталоге docker-chroot текущего каталога:
sudo debootstrap --verbose --include apt-transport-https --components=main,contrib,non-free orel ./docker-chroot https://dl.astralinux.ru/astra/stable/orel/repository/В примере в создаваемое chroot-окружение сразу устанавливается пакет apt-transport-https, что в дальнейшем позволит выполнять обновления из сетевых репозиториев используя защищенный протокол https.Для Astra Linux Special Edition опция --components=main,contrib,non-free обязательна, без неё образ Astra Linux Special Edition собран не будет.Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) следует использовать код дистрибутива 1.7_x86-64, например:
sudo debootstrap --verbose --components=main,contrib,non-free 1.7_x86-64 ./docker-chroot ftp://server/incoming/releases/se-1.7/base-repositoryЕсли сетевые репозитории пакетов недоступны (не используются), то загрузка может быть выполнена из копии репозитория в локальной файловой системе, например:
sudo debootstrap --verbose orel ./docker-chroot file:///srv/repo/orel
- Настройка окружения может выполняться как от имени суперпользователя, так и с переходом в окружение с помощью команды chroot, например:
Можно использовать имеющиеся файлы /etc/resolv.conf и /etc/apt/sources.list просто скопировав его в chroot:
sudo cp /etc/resolv.conf docker-chroot/etc/resolv.confили, по необходимости, отредактировать файлы в окружении с помощью любого текстового редактора, например:
sudo cp /etc/apt/sources.list docker-chroot/etc/apt/sources.listsudo nano docker-chroot/etc/apt/sources.listВыполнить обновление созданного окружения, войдя в него с помощью команды chroot:
sudo chroot docker-chroot
apt update
apt dist-upgrade
exit
Создание образа wiki/astralinux:orel:
sudo tar -C docker-chroot -cpf - . | sudo docker import - wiki/astralinux:orel --change "ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" --change 'CMD ["/bin/bash"]'в этом примере использована опция -C чтобы сменить текущий каталог при архивировании и дважды использована опция импорта --change, задающая в первом случае переменную окружения PATH, во втором - команду, которая будет вызываться по умолчанию при запуске контейнера (/bin/bash).
Если все операции выполнены успешно, то:
Созданный образ должен отображаться в списке образов:
sudo docker imagesВ созданный образ можно войти выполнив команду:
sudo docker run -it --rm wiki/astralinux:orel