Docker и точка. Отжимаем образа у Chainguard

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Вобщем не понимаю я переживаний на счет Докера, ну ушел и ушел, это блин вообще некритикал, все уже привыкли)

Но задумался вот над чем. Вобщем есть такая компания Chainguard, которая готовит такие образа в которых всегда 0 уязвимостей*, ну кроме неизвестных (* - по версии компании). Вообще, круто то, что это прям максимальный Shift left без каких-либо вспомогательных инструментов. Так вот подписка там платная и только с ней можно качать образа определенной версии. В бесплатной подписке можно пулить только образа с версией latest. Разумеется, если вы серьезный энтерпрайз, а не хипстерский стартап, то такое использовать фе. Но, что если написать такую штуку, которая определяет версию образа. Причем это вполне реально. 

Например, такое:

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

  2. Запускаем необходимую команду в контейнере из latest-образа

  3. Грепаем оттуда версию

  4. Ретегируем образ полученной версией 

  5. Пушим в свой прайват репозиторий

Вот к примеру вручную:

  1. Берем образ Nginx

    $ docker pull cgr.dev/chainguard/nginx
    Using default tag: latest
    latest: Pulling from chainguard/nginx
    Digest: sha256:1a01e891696587501b097645d4feead0e0c512f7919481a10115d01bc1e94d27
    Status: Image is up to date for cgr.dev/chainguard/nginx:latest
    cgr.dev/chainguard/nginx:latest

  2. Запускаем необходимую команду для определения версии в контейнере

    $ docker run cgr.dev/chainguard/nginx -v
    nginx version: nginx/1.25.5

  3. Парсим версию. Лень думать, спрашиваем у жпт)

    Парсим версию:
    $ echo "nginx version: nginx/1.25.5" | grep -oP '(?<=nginx/)[^\s]+'
    1.25.5

  4. Ретегируем образ

    $ docker tag cgr.dev/chainguard/nginx:latest <private repo>/nginx:1.25.5

  5. Пушим в прайват-репу

     $ docker push <private repo>/nginx:1.25.5

    Кстати, интересно, кто еще об это думал или попробовал написать такое? Пообщался щас с Rus Dacent (автор канала Технологический Болт Генона). Толик об этой идее кстати рассказывал на DefCon в Нижнем Новгороде ;)

Источник: https://habr.com/ru/articles/818517/


Интересные статьи

Интересные статьи

Продолжаем серию публикаций «werf vs...», которая вдохновлена часто задаваемыми вопросами. В первой статье мы объяснили, чем werf отличается от Helm. Теперь черед сравнен...
В интернете всегда кто-то неправ, и часто встречаются плохие советы по упаковке Docker. Но некоторые из них достаточно опасны, чтобы удостоиться этой статьи. Часто пишут, что при сб...
В этой статье мы подготовим окружение для запуска контейнеров в Windows 10 и создадим простое контейнеризированное приложение .NET Читать далее
Привет, Хабр! В современной реальности из-за возрастающей роли контейнеризации в процессах разработки не на последнем месте стоит вопрос обеспечения безопасности различных этапов и с...
Компания Mirantis выкупила бизнес-платформу Docker Enterprise, сообщается на официальном сайте Docker и в пресс-релизе Mirantis. Компания Mirantis специализируется на разработке собственной о...