devopscodepro
Язык
Работает полностью в браузере — данные не покидают страницу.

Анализатор Dockerfile

Проверка Dockerfile на запуск от root, незафиксированные образы, утечки секретов, сброс кэша и раздувание образа.

или вставьте ниже
разбирается локально — Dockerfile не покидает ваш браузер

Что проверяет анализатор

Dockerfile разбирается — продолжения строк склеиваются, комментарии учитываются — и по нему прогоняются 22 правила, покрывающие то, что стабильно приводит к проблемам: контейнеры от root, секреты, зашитые в ENV или ARG, незакреплённые базовые образы, кэши пакетных менеджеров в слоях и порядок COPY, который выбрасывает кэш сборки при каждом изменении исходников.

Всё происходит в вашем браузере, и это важно: в Dockerfile попадают адреса внутренних реестров и, чаще, чем принято признавать, настоящие учётные данные.

У меня есть инструкция USER — почему пишет, что образ работает от root?

Что запускает контейнер, определяет только финальная стадия. USER в стадии сборки отбрасывается вместе с ней. Ставьте USER в последней стадии, после последней операции, которой нужен доступ на запись.

Почему ADD помечается, а COPY нет?

ADD дополнительно распаковывает архивы и скачивает URL. И то, и другое иногда полезно, а в остальное время неожиданно: ADD файла .tar.gz молча его распакует. Правило допускает ADD для удалённых URL и архивов и просит COPY во всех остальных случаях.

Помечает секрет в ENV, хотя там заглушка. Почему?

Пустые значения, ссылки вида ${VAR} и очевидные заглушки не помечаются. Помечается литеральное значение рядом с ключом, названным как учётные данные, — потому что всё заданное через ENV или ARG остаётся в истории образа и доступно каждому, кто его скачает.

Одностадийная сборка — это ошибка?

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

Смежные инструменты: Валидатор манифестов K8s, SBOM viewer и CVE Kubernetes.