Klíčové věci

  • Pro lepší zabezpečení a výkon použijte oficiální obrázky Dockeru. Vytváření vlastních obrázků může vést k nesprávné konfiguraci a zabere více času.
  • Používejte specifické verze obrazů Docker, abyste se vyhnuli nepředvídatelnému chování a kolizím se závislostmi. Vytáhněte a sestavte pomocí obrázků konkrétní verze.
  • Pomocí příkazu docker scan prohledejte v obrazech Docker chyby zabezpečení. Zjistěte, zda je obraz dostatečně bezpečný pro vaši aplikaci.

Docker je nejoblíbenější kontejnerizační software, ale ne každý jej využívá efektivně. Pokud se nebudete řídit osvědčenými postupy Dockeru, můžete nechat své aplikace zranitelné vůči problémům se zabezpečením nebo výkonem.

Zde je několik osvědčených postupů, které můžete přijmout, abyste mohli funkce Dockeru vynalézavě používat. Tato opatření zlepšují zabezpečení a zajišťují vytváření udržovatelných souborů Docker.

1. Použijte oficiální obrázky Docker

Při kontejnerizaci aplikace musíte použít obrázek Docker. Můžete vytvořit obrázek s vlastní konfigurací nebo použít oficiální obrázky Docker.

Vytvoření vlastních obrázků vyžaduje, abyste veškerou konfiguraci zvládli sami. Chcete-li například vytvořit obrázek pro aplikaci node.js, musíte si stáhnout node.js a jeho závislosti. Tento proces je časově náročný a nemusí vést ke správné konfiguraci.

Docker doporučuje použít oficiální obrázek node.js, který je dodáván se všemi správnými závislostmi. Docker obrazy mají lepší bezpečnostní opatření, jsou lehké a jsou testovány pro různá prostředí. Oficiální obrázky najdete na Dockerovy oficiální obrázky strana.

2. Použijte konkrétní verze obrazu Docker

Obvykle, když vytáhnete oficiální obrázek, je to ten s nejnovější značkou, která představuje nejnovější aktualizovanou verzi tohoto obrázku. Pokaždé, když z tohoto obrázku vytvoříte kontejner, je to jiná verze posledního kontejneru.

Vytváření s různými verzemi obrazu Dockeru může způsobit nepředvídatelné chování ve vaší aplikaci. Verze mohou kolidovat s jinými závislostmi a nakonec způsobit selhání vaší aplikace.

Docker doporučuje, abyste vytáhli a vytvořili pomocí obrázků konkrétní verze. Oficiální obrázky mají také dokumentaci a pokrývají nejčastější případy použití.

Například místo toho docker pull alpine, použití docker pull alpine: 3.18.3. Docker stáhne tuto konkrétní verzi. Poté jej můžete použít v následných sestaveních a snížit tak chyby ve vaší aplikaci. Jednotlivé verze obrázků najdete na oficiální stránce obrázků Docker pod Podporované značky a příslušné odkazy na Dockerfile:

3. Skenujte obrázky, zda neobsahují chyby zabezpečení

Jak můžete zjistit, že obrázek, který chcete vytvořit, nemá žádné chyby zabezpečení? Naskenováním. Obrazy Dockeru můžete skenovat pomocí příkazu docker scan. Syntaxe je následující:

docker scan [IMAGE]

Chcete-li naskenovat obrázek, musíte se nejprve přihlásit do dockeru.

docker login

Poté naskenujte konkrétní obrázek, který chcete zkontrolovat:

docker scan ubuntu: latest

Nástroj tzv Synk naskenuje obrázek a vypíše případné chyby zabezpečení podle jejich závažnosti. Můžete zobrazit typ zranitelnosti a odkazy na informace o ní, včetně toho, jak ji opravit. Naskenováním poznáte, zda je obrázek dostatečně bezpečný pro vaši aplikaci.

4. Používejte malé obrázky Docker

Když vytáhnete obraz Dockeru, je dodáván se všemi systémovými nástroji. Tím se zvětší velikost obrázku pomocí nástrojů, které nepotřebujete.

Velké obrazy Dockeru zabírají úložný prostor a mohou zpomalit běh kontejnerů. Mají také větší možnost bezpečnostních slabin.

Můžeš zmenšit velikost obrázků Docker pomocí obrázků Alpine. Obrazy Alpine jsou lehké a dodávají se pouze s nezbytnými nástroji. Zmenšují úložný prostor, takže vaše aplikace běží rychleji a efektivněji.

Pro většinu oficiálních obrázků na Dockeru najdete alpskou verzi. Zde je příklad Alpine verzí pro PostgreSQL:

5. Optimalizace ukládání do mezipaměti obrazových vrstev

Každý příkaz v Dockerfile představuje vrstvu na obrázku. Vrstvy mají různé funkce a plní různé funkce. Pokud se podíváte na oficiální obrázky na Docker Hub, uvidíte pokyny použité k jejich vytvoření.

Dockerfile obsahuje vše, co potřebujete k vytvoření obrázku. Je to jeden z důvodů, proč mnoho vývojáři preferují Docker před virtuálními stroji.

Zde je struktura příkladu Alpine obrázku:

Když vytváříte aplikaci na základě obrázku, přidáváte do obrázku další vrstvy. Docker spouští pokyny na Dockerfile shora dolů, a pokud se vrstva změní, Docker musí znovu vytvořit následující vrstvy.

Nejlepším postupem je uspořádat váš Dockerfile od nejméně se měnících souborů po ty, které se mění nejčastěji. Pokyny, které se nemění, jako je instalace, mohou být v horní části souboru.

Když změníte soubor, Docker sestaví ze změněných souborů a uloží nezměněné soubory nad ním. Proces proto běží rychleji.

Podívejte se na příklad znázorněný na obrázku výše. Pokud dojde ke změně v souborech aplikace, Docker sestaví odtud; nemusí znovu instalovat balíčky npm.

Pokud vytvoříte z obrazu, proces poběží rychleji, než znovu vytvořit všechny ostatní vrstvy. Ukládání do mezipaměti také urychluje stahování a odesílání obrázků z Docker Hub.

7. Použijte soubor .dockerignore

Při vytváření bitové kopie pomocí souboru Dockerfile možná budete chtít zachovat některé informace soukromé. Některé soubory a složky mohou být součástí projektu, ale nechcete je zahrnout do procesu sestavení.

Použití souboru .dockerignore značně zmenší velikost obrázku. Je to proto, že proces vytváření zahrnuje pouze nezbytné soubory. Pomáhá také zachovat soukromí souborů a vyhnout se odhalení tajných klíčů nebo hesel.

Soubor .dockerignore je soubor, který vytvoříte ve stejné složce jako váš Dockerfile. Je to textový soubor, podobně jako soubor .gitignore, který obsahuje názvy všech souborů, které nechcete zahrnout do procesu sestavení.

Zde je příklad:

8. Používejte zásadu nejméně privilegovaného uživatele

Ve výchozím nastavení používá Docker uživatele root jako správce pro oprávnění spouštět příkazy, ale to je špatný postup. Pokud je v jednom z kontejnerů chyba zabezpečení, hackeři mohou získat přístup k hostiteli Docker.

Chcete-li se tomuto scénáři vyhnout, vytvořte vyhrazeného uživatele a skupinu. Pro ochranu citlivých informací můžete nastavit požadovaná oprávnění pro skupinu. Pokud dojde ke kompromitaci uživatele, můžete jej smazat, aniž by byl odhalen celý projekt.

Zde je příklad ukazující, jak vytvořit uživatele a nastavit jeho oprávnění:

Některé základní obrázky mají v sobě vytvořené pseudouživatele. Místo oprávnění uživatele root můžete použít nainstalované uživatele.

Proč byste měli přijmout osvědčené postupy společnosti Docker

Osvědčené postupy jsou skvělým způsobem, jak snížit zranitelnosti a napsat čistší kód. Existuje mnoho osvědčených postupů, které můžete použít pro každou funkci Dockeru, kterou používáte.

Dobře organizovaný projekt usnadňuje synchronizaci s jinými nástroji pro orchestraci, jako je Kubernetes. Můžete začít s těmi, které jsou uvedeny v článku, a přijmout další, když se naučíte Docker.