GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak používat Hadolint k lintování vašich Dockerfiles

Dockerfiles definují obsah obrázků Docker jako sadu instrukcí v textovém souboru. Syntaxe Dockerfile je obecně přímočará, ale existuje několik problémů, kterým je třeba se vyhnout. Dodržování osvědčených postupů při psaní složitých souborů Dockerfiles v týmovém nastavení může být složité, pokud automaticky neověřujete obsah souboru.

Hadolint je linter Dockerfile, který dokáže rozpoznat běžné problémy. K analýze vašeho Dockerfile podle předdefinovaných sad pravidel používá abstraktní strom syntaxe (AST). Hadolint také obsahuje ShellCheck, takže může lintat skripty shellu v RUN vašeho Dockerfile také pokyny.

Začínáme

Hadolint je distribuován v několika formátech. Můžete rychle začít stažením nejnovějšího předkompilovaného binárního souboru pro váš operační systém ze stránky vydání projektu GitHub.

Hadolint’s má také svůj vlastní obrázek Docker, hadolint/hadolint , pokud byste raději nepoužívali binární soubor přímo. Jako poslední možnost můžete přistupovat k Hadolintu přes web pro experimentování.

Propojení souboru Dockerfile

Chcete-li zahájit nové skenování, předejte Hadolintu cestu k souboru Dockerfile:

hadolint Dockerfile

Pokud používáte dockerizovanou verzi, je nejjednodušší přenést obsah souboru do kontejneru Hadolint:

docker run --rm -i hadolint/hadolint < Dockerfile


Výsledky skenování se zobrazí ve vašem terminálu. V tomto příkladu Hadolint navrhuje, aby RUN apt-get install v Dockerfile není bezpečné, protože neurčuje explicitní verze balíčku. Obsah vašeho obrázku se může mezi jednotlivými sestaveními změnit, což může způsobit matoucí problémy.

Co hledá Hadolint?

Hadolint má desítky vestavěných pravidel, která kontrolují běžné problémy s konfigurací a zabezpečením. Cílem linteru je zajistit, aby vaše soubory Docker byly v souladu s osvědčenými postupy pro vytváření obrazu navrženými Dockerem.

Zahrnuté kontroly pokrývají použití koncových uživatelů bez oprávnění root a odkazují na relativní cestu v WORKDIR s přidáním více HEALTHCHECK pokyny a nepoužívat výslovně připnuté značky a verze. Protože Hadolint také zdědí sadu pravidel ShellCheck, odhalí běžné problémy se skriptováním Bash, které tento nástroj také identifikuje.

Pravidla jsou identifikována jako čísla s předponou buď HL nebo SC . HL pravidla jsou součástí Hadolint, zatímco SC záznamy pocházejí z ShellCheck. Každé kontrole je přiřazena závažnost od chyby až po informace. Pokud se ve výsledcích skenování zobrazí chyby, měly by to být první problémy, které vyřešíte.

Přizpůsobení konfigurace

Hadolint se konfiguruje pomocí .hadolint.yaml soubor. Prohledá více umístění včetně vašeho pracovního, .config a domovské adresáře. Použije se pouze první nalezený soubor – mezi umístěními nedochází k žádnému slučování.

Konfigurační soubor vám umožňuje přizpůsobit prověřování ignorováním pravidel a změnou jejich závažnosti. Zatímco výchozí sada pravidel pokrývá doporučené doporučené postupy, můžete zjistit, že některé kontroly ve vašem prostředí neplatí. Potvrzení .hadolint.yaml soubor vedle vašeho Dockerfile vám umožní přizpůsobit skeny Hadolint odpovídajícím způsobem. Většina polí konfiguračních souborů je také podporována jako příznaky CLI a proměnné prostředí.

Pravidla jsou zakázána pomocí ignored pole. Toto by měl být seznam ID pravidel:

ignored:
  - DL3010
  - DL3020

Pokud potřebujete snížit závažnost pravidla, aniž byste jej úplně deaktivovali, použijte override místo toho klíč. To vám také umožňuje povýšit problém s nízkou závažností na vyšší úroveň. Použijte toto, pokud chcete klást větší důraz na konkrétní problém.

override:
  warning:
    - DL3020

Toto snižuje pravidlo DL3020 z výchozí úrovně „chyby“ na méně závažné „varování“. Toto pravidlo vyžaduje, abyste použili COPY místo ADD při odkazování na soubory a složky v kontextu vašeho sestavení.

Můžete také upravit úroveň globální závažnosti. Nastavení failure-threshold pole dává Hadolintovi pokyn, aby skončil se stavem selhání, pokud jakýkoli test ohlásí chybu na dané úrovni závažnosti:

failure-threshold: warning

Tato instrukce znamená, že skenování Hadolint selže, pokud je ve výstupu chyba nebo varování.

Ukončení s kódem selhání můžete zakázat pomocí no-fail: true config nebo --no-fail příznak CLI. To dá Hadolint pokyn k ukončení s 0 kód bez ohledu na skutečný výsledek testu. Může to být užitečné, pokud chcete zahrnout Hadolint jako neblokující úlohu do kanálu CI.

Důvěryhodné registry

Dalším použitím konfiguračního souboru je definování důvěryhodných registrů, na které chcete odkazovat ve svých souborech Dockerfiles. Když trustedRegistries je nastaveno, Hadolint vás upozorní, když je použit obraz z jiného registru:

trustedRegistries:
  - docker.io
  - docker-registry.example.com

Schémata štítků

Hadolint nabízí také základní potah etiket. To vám umožní vynutit, aby štítky přidané k vašemu obrázku pomocí Dockerfile LABEL pokyny splňují specifikovaná omezení. Zde je příklad, jak to funguje:

label-schema:
  notes: text
  app-version: semver
  built-at: rfc3339

Tento konfigurační fragment definuje datové typy pro čtyři štítky, které můžete použít ve svém Dockerfile. notes je deklarováno jako libovolné textové pole, zatímco app-version musí být semver kompatibilní identifikátor verze. built-at je označen jako RFC-3339 datetime string. Úplný seznam podporovaných typů můžete získat v dokumentech Hadolint.

Hadolint umožňuje použití štítků, které nejsou uvedeny ve vašem schématu. Toto můžete zakázat a omezit LABEL instrukce pouze těm přítomným ve schématu nastavením strict-labels: true nebo pomocí --strict-labels vlajka.

Výstupní formáty

Prostřednictvím format je podporováno několik výstupních formátů volba nebo --format vlajka. Výchozí hodnota je tty který vysílá barevný výstup do vašeho terminálu. Barvy lze deaktivovat pomocí --no-color vlajka.

K dispozici jsou následující alternativní formátovače:

  • json – Poskytuje seznam zjištěných problémů jako podrobnou strukturu JSON, která je ideální pro použití s ​​vašimi vlastními skripty.
  • checkstyle – Přehled kompatibilní s Checkstyle.
  • codeclimate – Zpráva kompatibilní s Code Climate.
  • gitlab_codeclimate – Variace zprávy Code Climate, která pracuje s integrovanými funkcemi kvality kódu GitLab. To vám umožní zobrazit chyby jako widget na stránkách požadavků na sloučení při spuštění Hadolint s GitLab CI.

Tyto výstupní formáty jsou ideální pro použití Hadolintu programově nebo jako součást kanálu CI.

Přehled

Hadolint automatizuje detekci problémů s Dockerfile. To pomáhá vašim obrázkům Docker dodržovat osvědčené postupy a organizační standardy. Výchozí konfigurace je dobrým výchozím bodem, ale můžete ji upravit tak, aby vyhovovala vašim potřebám, změnou klasifikace a deaktivací pravidel.

Měli byste zvážit integraci Hadolint s vaším nástrojem CI, abyste získali okamžitá hlášení, jakmile budou změny Dockerfile potvrzeny. To urychluje kontrolu kódu tím, že poskytuje vývojářům okamžitý přehled o problémech. Tento nástroj můžete také používat lokálně při práci prostřednictvím komunitou podporovaných rozšíření editoru, což poskytuje ještě kratší zpětnou vazbu.


Docker
  1. Jak používat váš dedikovaný server

  2. Jak používat Dockerfile ONBUILD ke spouštění spouštěčů na následných sestaveních

  3. Jak používat příkaz Docker Inspect

  1. Jak používat dd v Linuxu bez zničení disku

  2. Jak používat Tor Browser k ochraně vašeho soukromí online

  3. Jak používat OpenSSH k připojení k vašemu linuxovému serveru

  1. Jak používat obrázky, kontejnery a soubory Docker do hloubky

  2. Jak používat Docker Compose

  3. Jak použít Dockerfile k vytvoření Docker Image