Omnikit
ProgramowaniePlikiFinanseWszystkie narzędzia
Ctrl K
Narzędzia dla programistówNarzędzia do plikówKalkulatory finansoweWszystkie narzędzia
Strona głównaNarzędzia dla programistówLinter Dockerfile
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский

Linter Dockerfile

programowanie

Sprawdź Dockerfile 55 regułami hadolint: przypięte wersje, użytkownik root, cache i więcej

Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane. Sprawdzono 16 października 2026.

Linter Dockerfile czyta plik bez budowania go i oznacza ryzykowne lub rozrzutne linie. Ten stosuje 55 reguł DL z hadolint, takich jak DL3008 dla pakietów apt-get bez przypiętej wersji i DL3002 dla uruchamiania jako root, i dla każdego znaleziska podaje linię, poziom i poprawkę. Działa w przeglądarce, bez instalacji i bez Dockera.

Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał

Dalej:
  • Walidator pliku .env Sprawdzanie pliku .env linia po linii tak, jak czyta go dotenv, i konwersja do JSON lub YAML
  • systemd OnCalendar Tester Check a systemd timer OnCalendar= value and see its next run times, or convert cron

Jak sprawdzić Dockerfile online

1

Wklej Dockerfile do pola, otwórz plik albo kliknij Wypróbuj przykład.

2

Przeczytaj znaleziska posortowane według linii: każde ma poziom, kod hadolint, opis problemu i sposób naprawy.

3

Kliknij znalezisko, aby przejść do jego linii, popraw ją i obserwuj, jak lista aktualizuje się podczas pisania.

4

Kliknij Kopiuj raport, aby zabrać znaleziska jako tekst do pull requesta lub zgłoszenia.

O linterze Dockerfile

Dockerfile może się budować dziś i przestać za miesiąc: obraz bazowy bez przypiętej wersji się zmienia, apt-get install pobiera nową wersję, cache pozostawiony w warstwie powiększa obraz o setki megabajtów. Linter wyłapuje to przed wdrożeniem. hadolint to standard w potokach CI; ta strona stosuje jego reguły dla Dockerfile w przeglądarce.

Co jest sprawdzane. Każde znalezisko podaje linię, kod hadolint, poziom i poprawkę w jednym zdaniu. Reguły dzielą się na pięć grup:

Grupa Przykłady
Powtarzalne buildy DL3006 obraz bez tagu, DL3007 latest, DL3008 apt-get, DL3013 pip, DL3016 npm, DL3018 apk
Mniejsze obrazy DL3009 listy apt, DL3015 recommends, DL3019 cache apk, DL3042 cache pip, DL3059 zbędne warstwy RUN
Bezpieczeństwo DL3002 użytkownik root, DL3004 sudo, DL4006 pipefail
Poprawność DL3011 zakres portów, DL3021 cel COPY, DL3022 i DL3023 nazwy etapów, DL3044 ENV, DL3061 kolejność
Jasne intencje DL3000 WORKDIR, DL3003 cd, DL3020 ADD, DL3025 CMD w JSON, DL4000 MAINTAINER

Jak blisko jest do hadolint. Reguły napisano na podstawie kodu źródłowego hadolint 2.12, a testy korzystają z odpowiedzi prawdziwego programu hadolint dla ponad 80 plików Dockerfile: te same kody w tych samych liniach, za każdym razem. Buildy wieloetapowe, ONBUILD, linie kontynuacji, dyrektywa escape i komentarze # hadolint ignore= w treści działają jak w hadolint. Ostrzeżenia SC z ShellCheck dotyczące kodu powłoki w liniach RUN nie są uwzględnione.

Wyłączanie reguły. Umieść # hadolint ignore=DL3008 w linii przed instrukcją, aby pominąć tę regułę w tym miejscu, albo # hadolint global ignore=DL3059 w dowolnym miejscu, aby pominąć ją w całym pliku. Podsumowanie podaje, ile znalezisk wyłączono.

Wszystko działa w przeglądarce: wklejony lub otwarty Dockerfile nigdy nie jest wysyłany.

Najczęściej zadawane pytania

Co oznacza DL3008 w hadolint?

DL3008 mówi, że linia apt-get install wymienia pakiety bez wersji, więc każdy build może zainstalować coś innego. Należy pisać pakiet=wersja, np. curl=7.88.1-10+deb12u5, a bieżącą wersję można sprawdzić poleceniem apt-cache policy curl w obrazie bazowym. Przypięte wersje czynią obraz powtarzalnym; aktualizuje się je celowo, a nie przypadkiem.

Dlaczego ostatni USER nie powinien być root?

Kontener działający jako root ma w środku uprawnienia roota, więc napastnik, który włamie się do aplikacji, może zrobić więcej, a błąd w zamontowanym wolumenie może zmienić pliki hosta. Należy utworzyć użytkownika w RUN, np. useradd app, i zakończyć etap linią USER app. Wcześniejsze kroki builda mogą nadal działać jako root.

Dlaczego usuwać /var/lib/apt/lists w tym samym RUN?

Każdy RUN tworzy warstwę, a plik usunięty w późniejszej warstwie nadal zajmuje miejsce we wcześniejszej. apt-get update pobiera listy pakietów o rozmiarze dziesiątek megabajtów, więc należy je usunąć w tym samym RUN poleceniem && rm -rf /var/lib/apt/lists/*. Usunięcie ich w osobnym RUN niczego nie oszczędza.

Jak zignorować regułę hadolint dla jednej linii?

Należy napisać komentarz bezpośrednio nad instrukcją: # hadolint ignore=DL3008, lub kilka kodów rozdzielonych przecinkami. Aby wyłączyć regułę w całym pliku, wystarczy w dowolnym miejscu napisać # hadolint global ignore=DL3059. Oba sposoby działają w samym hadolint i na tej stronie, a podsumowanie liczy, co zostało wyłączone.

Czy to to samo co uruchomienie hadolint?

W przypadku reguł Dockerfile tak: 55 kodów DL, ich poziomy i warunki odpowiadają hadolint 2.12, a testy porównują wyniki z prawdziwym programem hadolint na ponad 80 plikach. Nie uwzględniono ostrzeżeń SC z ShellCheck dotyczących kodu powłoki w liniach RUN ani reguł wymagających pliku konfiguracyjnego, takich jak dozwolone rejestry.

Czy w Dockerfile używać COPY, czy ADD?

Do plików i folderów należy używać COPY. ADD dodatkowo pobiera adresy URL i rozpakowuje lokalne archiwa tar, co jest przydatne, gdy chodzi dokładnie o to, i zaskakujące, gdy nie. hadolint oznacza ADD dla zwykłego pliku jako DL3020, a COPY, po którym następuje tar -x tego samego archiwum, jako DL3010, bo ADD zrobiłby to w jednym kroku.

Źródła

  • 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

Ostatnia weryfikacja: 16 października 2026.

Stawki i przepisy się zmieniają; przed oparciem się na danej liczbie należy sprawdzić źródło.

Nadal coś nie działa? Zapytaj o narzędzie Linter Dockerfile a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.

Powiązane narzędzia

Wszystkie narzędzia dla programistów
Tester wyrażeń regularnychTestowanie wyrażeń regularnych JavaScript z podświetlaniem na żywo i objaśnieniem prostym językiemPorównywarka tekstówPorównanie dwóch tekstów obok siebie z każdym dodanym i usuniętym wierszemPorównywanie JSONPorównaj dwa dokumenty JSON i zobacz każdą dodaną, usuniętą i zmienioną wartośćPodgląd Open GraphWklej stronę i zobacz kartę udostępniania dla Facebooka, LinkedIn, X, WhatsApp i SlackaGęstość słów kluczowych i czytelnośćLiczba słów i fraz, gęstość, czas czytania i wskaźnik czytelności FleschaKody statusu HTTPKażdy kod statusu HTTP: co oznacza, kiedy go wysyłać i z którego RFC pochodziParser user agentaOdczytaj ciąg user-agent: przeglądarka, silnik, system, typ urządzenia i czy to botTester JSONPathUruchamiaj zapytania JSONPath zgodne z RFC 9535 na wklejonym JSON i zobacz każde dopasowanie wyróżnione
Czy to narzędzie było pomocne?
Omnikit

Małe zadania wykonywane w przeglądarce. Bezpłatnie, szybko i prywatnie. Pliki nigdy nie są przesyłane.

Pliki

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

Programowanie

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

Finanse

  • SIP Calculator
  • EMI Calculator
  • GST Calculator
  • FD Calculator
  • PPF Calculator
  • Lumpsum Calculator
EnglishالعربيةবাংলাDeutschEspañolFrançaisPolskiPortuguêsРусский
PoradnikiPytaniaO serwisieJak sprawdzamyBiblioteka prawa (beta)PrywatnośćRegulaminUjawnieniaKontaktMore: Exam practice (UGC NET Paper 1)Działa w przeglądarce. Nic nie jest przesyłane. © 2026 Omnikit (theomnikit.com)