Omnikit
РазработкаФайлыФинансыВсе инструменты
Ctrl K
Инструменты для разработкиИнструменты для файловФинансовые калькуляторыВсе инструменты
ГлавнаяИнструменты для разработчиковЛинтер Dockerfile
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский

Линтер Dockerfile

разработка

Проверка Dockerfile по 55 правилам hadolint: закреплённые версии, пользователь root, кэш и другое

Работает в вашем браузере. Ничего из того, что вы вводите, никуда не отправляется. Проверено 16 октября 2026 г..

Линтер Dockerfile читает файл, не собирая его, и отмечает рискованные или расточительные строки. Этот применяет 55 правил DL из hadolint, например DL3008 для пакетов apt-get без закреплённой версии и DL3002 для запуска от root, и для каждой находки указывает строку, уровень и исправление. Он работает в вашем браузере, без установки и без Docker.

Эта страница переведена машинным способом с английского оригинала. Перевод ещё не проверен человеком, поэтому ориентируйтесь на английскую версию. Читать английский оригинал

Дальше:
  • Валидатор файла .env Проверка файла .env построчно так, как его читает dotenv, и конвертация в JSON или YAML
  • systemd OnCalendar Tester Check a systemd timer OnCalendar= value and see its next run times, or convert cron

Как проверить Dockerfile онлайн

1

Вставьте Dockerfile в поле, откройте файл или нажмите «Попробовать пример».

2

Прочитайте находки, отсортированные по строкам: у каждой есть уровень, код hadolint, описание проблемы и способ исправления.

3

Нажмите на находку, чтобы перейти к её строке, исправьте её и смотрите, как список обновляется по мере ввода.

4

Нажмите «Копировать отчёт», чтобы забрать находки текстом для pull request или задачи.

О линтере Dockerfile

Dockerfile может собираться сегодня и сломаться через месяц: базовый образ без закреплённой версии меняется, apt-get install подтягивает новую версию, кэш, оставленный в слое, увеличивает образ на сотни мегабайт. Линтер находит это до выпуска. hadolint — стандарт в CI-конвейерах; эта страница применяет его правила для Dockerfile в вашем браузере.

Что проверяется. Каждая находка указывает строку, код hadolint, уровень и исправление в одну строку. Правила делятся на пять групп:

Группа Примеры
Воспроизводимые сборки DL3006 образ без тега, DL3007 latest, DL3008 apt-get, DL3013 pip, DL3016 npm, DL3018 apk
Образы меньше DL3009 списки apt, DL3015 recommends, DL3019 кэш apk, DL3042 кэш pip, DL3059 лишние слои RUN
Безопасность DL3002 пользователь root, DL3004 sudo, DL4006 pipefail
Корректность DL3011 диапазон портов, DL3021 цель COPY, DL3022 и DL3023 имена стадий, DL3044 ENV, DL3061 порядок
Ясность намерений DL3000 WORKDIR, DL3003 cd, DL3020 ADD, DL3025 CMD в JSON, DL4000 MAINTAINER

Насколько это близко к hadolint. Правила написаны по исходному коду hadolint 2.12, а тесты используют ответы настоящей программы hadolint для более чем 80 Dockerfile: те же коды в тех же строках, каждый раз. Многоступенчатые сборки, ONBUILD, строки продолжения, директива escape и встроенные комментарии # hadolint ignore= ведут себя как в hadolint. Предупреждения SC от ShellCheck о shell-коде внутри строк RUN не включены.

Как отключить правило. Поставьте # hadolint ignore=DL3008 в строке перед инструкцией, чтобы пропустить это правило там, или # hadolint global ignore=DL3059 в любом месте, чтобы пропустить его для всего файла. В сводке указано, сколько находок отключено.

Всё работает в вашем браузере: Dockerfile, который вы вставляете или открываете, никуда не загружается.

Частые вопросы

Что означает DL3008 в hadolint?

DL3008 сообщает, что строка apt-get install называет пакеты без версий, поэтому каждая сборка может установить что-то другое. Пишите пакет=версия, например curl=7.88.1-10+deb12u5, а текущую версию узнайте командой apt-cache policy curl внутри базового образа. Закреплённые версии делают образ воспроизводимым; обновляйте их намеренно, а не случайно.

Почему последний USER не должен быть root?

Контейнер, запущенный от root, имеет внутри права root, поэтому злоумышленник, проникший в приложение, может сделать больше, а ошибка в смонтированном томе может изменить файлы хоста. Создайте пользователя в RUN, например useradd app, и завершите стадию строкой USER app. Шаги сборки до этого по-прежнему могут выполняться от root.

Зачем удалять /var/lib/apt/lists в том же RUN?

Каждый RUN создаёт слой, и файл, удалённый в более позднем слое, всё равно занимает место в предыдущем. apt-get update загружает списки пакетов размером в десятки мегабайт, поэтому удаляйте их в том же RUN с помощью && rm -rf /var/lib/apt/lists/*. Удаление в отдельном RUN ничего не экономит.

Как игнорировать правило hadolint для одной строки?

Напишите комментарий прямо над инструкцией: # hadolint ignore=DL3008, или несколько кодов через запятую. Чтобы отключить правило для всего файла, напишите # hadolint global ignore=DL3059 в любом месте. Оба способа работают и в самом hadolint, и на этой странице, а сводка считает, что было отключено.

Это то же самое, что запустить hadolint?

Для правил Dockerfile — да: 55 кодов DL, их уровни и условия следуют hadolint 2.12, а тесты сравнивают результаты с настоящей программой hadolint на более чем 80 файлах. Не включены предупреждения SC от ShellCheck о shell-коде внутри строк RUN и правила, которым нужен файл конфигурации, например разрешённые реестры.

Что использовать в Dockerfile: COPY или ADD?

Используйте COPY для файлов и папок. ADD также скачивает URL и распаковывает локальные tar-архивы, что полезно, когда нужно именно это, и неожиданно, когда нет. hadolint отмечает ADD для обычного файла как DL3020, а COPY, за которым следует tar -x того же архива, как DL3010 — ADD сделал бы это за один шаг.

Источники

  • hadolint, the Haskell Dockerfile Linter (GitHub, v2.12.0)The DL rules, their levels and their exact conditions; the binary is the reference the tests compare against
  • Docker Docs, Dockerfile referenceInstruction syntax, continuation lines, the escape directive, exec and shell form
  • Docker Docs, Building best practicesPinning base images, apt-get cleanup in the same RUN, COPY over ADD, unprivileged USER

Последняя проверка: 16 октября 2026 г..

Ставки и правила меняются; проверьте источник, прежде чем полагаться на цифру.

Всё ещё не получается? Задайте вопрос об инструменте «Линтер Dockerfile» и ответить может любой, кто знает. Учётная запись не нужна.

Похожие инструменты

Все инструменты для разработчиков
Тестер регулярных выраженийПроверка регулярных выражений JavaScript с подсветкой на лету и объяснением простым языкомСравнение текстовСравните два текста бок о бок и увидьте каждую добавленную и удалённую строкуСравнение JSONСравните два документа JSON и получите каждое добавленное, удалённое и изменённое значениеПредпросмотр Open GraphВставьте страницу и посмотрите карточку для Facebook, LinkedIn, X, WhatsApp и SlackПлотность ключевых слов и читаемостьПодсчёт слов и фраз, плотность, время чтения и индекс удобочитаемости ФлешаКоды состояния HTTPВсе коды состояния HTTP: что они значат, когда их отправлять и из какого RFC они взятыПарсер User-AgentРазберите строку User-Agent: браузер, движок, ОС, тип устройства и бот ли этоТестер JSONPathВыполняйте запросы JSONPath по RFC 9535 к вставленному JSON и смотрите каждое совпадение с подсветкой
Был ли этот инструмент полезен?
Omnikit

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

Файлы

  • Compress Image
  • Image to PDF
  • Merge PDF
  • Compress PDF
  • PDF to Word
  • Word to PDF

Разработка

  • JSON Formatter & Validator
  • Base64 Encode & Decode
  • JWT Decoder, Verifier & Encoder
  • Password Generator
  • UUID Generator
  • Unix Timestamp Converter

Финансы

  • SIP Calculator
  • EMI Calculator
  • GST Calculator
  • FD Calculator
  • PPF Calculator
  • Lumpsum Calculator
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский
РуководстваВопросыО сайтеКак мы проверяемБиблиотека законов (бета)КонфиденциальностьУсловияРаскрытие информацииКонтактыMore: Exam practice (UGC NET Paper 1)Работает в вашем браузере. Ничего не загружается на сервер. © 2026 Omnikit (theomnikit.com)