В 100% последних проектов мы используем docker и kubernetes, поэтому, повстречавшись с "особым" путем использования базовых docker-образов AstraLinux, мы решили упростить жизнь себе и другим разработчикам.

Кому лень читать дальше, то образы здесь https://hub.docker.com/r/ipodsekin/astralinux.

А кому интересны подробности, добро пожаловать под кат.

"Особый" путь

Разработчик AstraLinux предоставляет готовые docker-образы, которые вы можете использовать в своих проектах.

Для этого вы можете зайти на сайт https://vault.astralinux.ru/images/, найти интересующий вас дистрибутив скачать его в виде... tar-архива и загрузить на ваш Docker Host и импортировать его на ваш Docker Host (оптимизация по комментариям @kozlyuk). Это делается командой:

docker import $BASE_URL$IMAGE_FILE $CI_REGISTRY_IMAGE:$TAG

Полагаю, что данный способ отличается от того, к чему привыкли разработчики, просто указывая наименование docker-образа в Dockerfile:

FROM ubuntu:22.04
...

Манипуляции с tar-архивами усложняют CI/CD, заставляют создавать промежуточные Docker Registry, а также делают неочевидным автоматическое обновление базовых образов.

А когда разрабатываем совсем простые образы, то мы просто на docker.com указываем автоматическую сборку: Docker Hub сам скачивает исходники, собирает образ, проверяет на уязвимости, а потом еще и webhook пришлёт вдогонку. Ясно, что tar-архивы идут мимо.

Путь самурая

Мы разработали скрипт https://gitlab.com/cloudlab_ru/astralinux, который позволяет скачивать tar-архивы docker-образов и публиковать их в Docker Hub. Самым очевидным решением было создать bash-файл со ссылками, прибитыми гвоздями, но тогда нужно было бы заходить на сайт, проверять наличие нового или обновленного образа (с тем же тэгом), обновлять bash-файл руками и т.п. Этот путь тоже "особый".

Был написан парсер в одну строку, который вытаскивал имена SHA-хэшей образов.

Затем, проходимся в цикле по ссылкам, скачиваем SHA-файл и проверяем, что у нас до этого не было образа с таким же SHA-хэшем. При этом сам tar-файл не проверяем на SHA, считаем, что разработчик все делает правильно. Так вот, если у нас не было такого файла, то скачиваем архив, импортируем в локальный Docker Host, а затем заливаем в Docker Hub имени меня https://hub.docker.com/r/ipodsekin/astralinux.

После этого мы можем уже свободно скачивать образ

docker pull ipodsekin/astralinux:orel-slim-2.12.45-mg7.1.0

или использовать его в качестве базового в вашем Dockerfile:

FROM ipodsekin/astralinux:orel-slim-2.12.45-mg7.1.0
...

Наш скрипт запускается раз в день и заливает обновления в Docker Hub.

Проверка

Создаем тестовый образ с curl:

FROM ipodsekin/astralinux:orel-slim-2.12.45-mg7.1.0
RUN apt-get update && apt-get install curl -y

Собираем его:

docker build . -t astralinuxtest

Запускаем контейнер и заходим в него:

docker run -it astralinuxtest /bin/sh

Проверяем версию AstraLinux и убеждаемся, что именно та, которую хотели (UPD: исправлено по комментариям @qrick):

# cat /etc/astra_version                   
CE 2.12.45 (orel)

Ну, и для проформы можно протестировать curl внутри:

curl https://www.google.com/
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang...
...

Образ работает, можно использовать.

Мы потратили примерно два часа на создание скрипта и написание этой статьи. Будет здорово, если разработчик ОС последует нашему примеру и выложит официальные образы в удобном виде.

Комментарии (25)


  1. Ares_ekb
    13.10.2022 17:43
    +1

    Спасибо! Как-раз на днях был нужен образ. Я нашёл только инструкцию как в Astra Linux сделать Docker образ Astra Linux, безуспешно попробовал адаптировать скрипт под Ubuntu и завис на установке Astra Linux :)


    1. Johan_Palych
      13.10.2022 23:54
      +2

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

      https://pkgs.org/search/?q=debootstrap
      cd /usr/share/debootstrap/scripts
      sudo ln -sfn sid orel


      1. Ares_ekb
        14.10.2022 06:27

        Спасибо, заработало! Единственное в скрипте build-docker-image.sh из инструкции заменил docker.io на docker-ce-cli.

        Может мне кто-нибудь поможет разобраться с ещё одной проблемой?.. Вообще мне нужно было запустить одно приложение, но на Ubuntu оно выдаёт ошибку "error while loading shared libraries: libparsec-base.so.3: cannot open shared object file: No such file or directory". На сколько я понимаю этот файл из пакета libparsec-base2. Но в обоих докер образах (из статьи, и в сделанном по инструкции) следующая команда выдаёт ошибку, что пакет не найден: apt-get install libparsec-base2. Он из какого-то секретного репозитория или я чего-то не понимаю...


  1. kozlyuk
    13.10.2022 18:13
    +4

    cat alse-slim-1.7.1-docker-mg7.0.0.tar| docker import - alse/alse1.7.1

    Во-первых, stop cat abuse! ©, во-вторых, docker import умеет принимать URL файла, что снизит использование диска. Надеюсь, образы выложат в registry и заодно подпишут их.


    1. WondeRu Автор
      13.10.2022 18:52

      Отлично, оптимизировал код, обновил статью!


  1. qrick
    13.10.2022 18:22
    +1

    Мы убили минут 10 времени на перепроверки, но, нет, все верно, это Ubuntu, но AstraLinux.

    Так контейнер не подменяет хостовое ядро. Что именно вы перепроверяли?


    1. WondeRu Автор
      13.10.2022 18:32
      +1

      Спасибо, что обратили внимание. Искренне считал, что uname покажет ОС контейнера, посыпаю голову пеплом. Исправлю.


  1. snakers4
    13.10.2022 19:14
    +1

    Думаю разработчики OC рано или поздно сделают свой registry, но честно говоря не совсем понимаю, зачем скачивать базовый образ ОС с репозитория третьей стороны, если как заметили выше можно просто сделать:

    docker import $BASE_URL$IMAGE_FILE $CI_REGISTRY_IMAGE:$TAG

    и потом уже в своём реестре наследовать образы.

    Ну конечно кроме рекламы Gitlab и / или услуг автора статьи.

    А про https://vault.astralinux.ru/images/ не знал, большое спасибо, это реально полезно, странно что в оф. документации на это просто ссылки нет ...


  1. snakers4
    13.10.2022 19:22

    Еще из интересного - по ссылке https://vault.astralinux.ru/images/alse/ - видно кому из вендоров они собирали какой-то кастом (может умельцы смогут быстро понять, чем они отличаются).

    Ну и что еще странно - по идее версия alse платная, а архивы для docker просто скачиваются и разархивируются без пароля.


    1. snakers4
      13.10.2022 19:26

      Чисто ради интереса посмотрел хеши в папках для разных вендоров хостинга для одной версии - они разные.


    1. WondeRu Автор
      13.10.2022 22:10
      +2

      rhel образы тоже можно скачивать, но софт от этого не становится лицензионным)


  1. Evengard
    14.10.2022 05:56
    +1

    А не нарушает ли такой перезалив какие-нибудь лицензионные соглашения?


    1. mylitsyn
      14.10.2022 09:35
      -2

      не исключено)


      1. kozlyuk
        14.10.2022 14:38
        +2

        От представителя компании ожидался бы не бесполезный двусмысленный комментарий, а авторитетный ответ на вопрос или хотя бы "спросил юристов про лицензию, сказал менеджерам про реестр", что уже было бы здоровым вниманием к сообществу, даже если юристы и менеджер в итоге скажут "нет".


        1. mylitsyn
          14.10.2022 14:47
          +3

          3.1. Пользователь обязуется не осуществлять самостоятельно и не создавать условия третьим лицам для осуществления следующих действий:

          3.1.3. Распространять ПО в пользу третьих лиц на возмездной или безвозмездной основе...


          1. WondeRu Автор
            14.10.2022 15:34
            +1

            Так закрывать docker, gitlab и удалять статью? Если да, пришлите, пожалуйста, запрос с официального ящика на email, указанный в gitlab-репозитории.


            1. AstraLinux_Group
              14.10.2022 16:39
              +1

              Действительно, данный вопрос лежит в  юридической плоскости. Мы обязательно вернемся с оптимальным вариантом решения. Спасибо за статью.


              1. snakers4
                14.10.2022 17:39
                +3

                @AstraLinux_Group

                Уважаемые разработчики Астры,

                Обращаюсь к вам публично как завсегдатай Хабра и человек, активно использующий докер билды в работе.


                Если отбросить все притворные ужимки по поводу "отечественного ПО", то мы живем в интересное время и более дружелюбная (где хотя бы кто-то активно сканирует закладки) к нашим разработчикам ОС, которая соответствует каким-то там критериям безопасности (я не супер спец в этом) - объективно нужна.

                И то, что она основана на Debian - это просто прекрасно (если вы можете обеспечить эту самую безопасность на уровне =) ). Понятно, что без полного вертикально интегрированного процесса от дизайна до производства чипов мы далеки от суверенитета.

                Я прочитал вашу лицензию и прекрасно понимаю, почему там все так написано. Скорее всего всё делалось усилиями команды энтузиастов, вы сводили до недавнего времени концы с концами (думаю меня поправят знатоки в ответе на комментарий).

                Но честно говоря и ваши ответы, лицензия и "спрятанные" docker-образы (на vault ссылки в документации у вас нету) - неправильные (должно быть условно FROM bla-bla astra). Вы должны с одной стороны стричь купоны с корп. клиентов, а с другой добиваться, чтобы каждый утюг в нашей стране использовал вашу ОС в качестве базовой (я утрирую). Как вы этого добьетесь - я не знаю.

                Заход в хостинги - объективно правильный, тут вы супер круто сделали. Я был приятно удивлен.

                Все ОС за редким исключением сейчас уже давно стали условно бесплатными и вы явно в проигрышной позиции, у вас сильно меньше ресурсов и времени. Но это не повод так отвечать своим пользователями, которые хотели добра для всех.

                Комментарий по поводу того, что ОС нельзя ни в коем случае качать не с ресурса официального разработчика (и он очевидно так рекламирует свои услуги) я добавил выше. Но в этом нет ничего плохого. Коммунизм уже развалил недавно покинувший нас "товарищ".

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


                1. Johan_Palych
                  14.10.2022 20:37

                  Цены на лицензирование

                  https://astralinux.online/

                  По Astra Linux:

                  Astra Linux is the Russian Debian derivative.
                  Debian derivative model: rebuilds all Debian source packages, modifies some source packages and adds new packages
                  https://wiki.debian.org/Derivatives/Census/AstraLinux
                  ---
                  Linux Kernel Organization, управляемая The Linux Foundation, разместила в 2019 г. официальное зеркало Astra Linux
                  https://mirrors.kernel.org/astra
                  https://mirrors.edge.kernel.org/astra/


              1. s207883
                15.10.2022 21:43

                Разве выкладывание на докерхаб будет противоречить вашей лицензии? Удобство использования увеличится на порядок и тем самым поспособствует продвижению ос в массы.

                Если не хочется использовать докерхаб как недружелюбную и неподконтрольную площадку, то можно развернуть свой с использованием какого-нибудь Harbor. Образы ведь так и так доступны.


    1. turbidit
      14.10.2022 12:44

      Судя по их фашистким лицензиям - наверняка


  1. jingvar
    16.10.2022 09:07
    +1

    А зачем ссать против ветра? Не хочет вендор быть лицом к народу, так не используйте его продукт.

    Какая угроза жизни и здоровью заставляет использовать астру? Работы мало на рынке чтобы вот так нагибаться?


  1. OrkBiotechnologist
    16.10.2022 15:51

    Почему Docker, а не Podman?
    Почему Астра, а не любой другой дистр?
    Преимущество только в том, что его сертифицировали и дали государственную бумажку с одобрением к использованию?


    1. WondeRu Автор
      16.10.2022 15:53

      Мы делаем проекты в том числе для окологосударственных компаний, поэтому сейчас новые проекты идут на Астре и Альте. А по поводу подмана: мы дальше живем на кубере, лучше него ничего нет.


  1. 9ella
    16.10.2022 15:53
    +1

    Говорят, в 20-ом релизе НСА заставила их добавить листенер, так что не совсем ясно насколько защищена Астра под новым докером...