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. Парсим версию. Лень думать, спрашиваем у жпт)

    850502a1122575181fa961e2c36fe29d.png

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

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

    $ docker tag cgr.dev/chainguard/nginx:latest /nginx:1.25.5

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

     $ docker push /nginx:1.25.5

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

    В общем попозже попробую навоять сервис:)

© Habrahabr.ru