Co je Docker image?
Docker image je balíček určený jen pro čtení, který spojuje vaši aplikaci se vším, co potřebuje k běhu: s kódem, běhovým prostředím, systémovými knihovnami a nastavením. Image postavíte jednou podle receptu (soubor Dockerfile) a pak z ní spustíte libovolný počet stejných kontejnerů. Image je předloha, kontejner je její spuštěná instance.
Image se staví po vrstvách. Každý příkaz v Dockerfile přidá novou vrstvu na tu předchozí a vrstvy se ukládají do mezipaměti. Když stavíte znovu, Docker použije vrstvy, které se nezměnily, a přepočítá jen ty změněné. Díky tomu jsou sestavení rychlá a úložiště úsporné.
Lidsky řečeno
Docker image si představte jako recept na dort, který někdo zapsal a zmrazil přesně ve chvíli, kdy je dokonalý. Kdokoli ten zmrazený recept vezme a upeče totožný dort, kolikrát chce, a nemusí hádat suroviny. Vrstvy jsou jako patra dortu: když změníte jen polevu, korpus znovu péct nemusíte.
Proč na tom záleží
- Všude stejné. Stejná image běží stejně na notebooku, na testovacím serveru i v produkci. Konec výmluvy „u mě to funguje“.
- Rychle a opakovatelně. Mezipaměť vrstev znamená, že malé změny se přestaví během vteřin a výsledek je pokaždé totožný.
- Snadné sdílení. Image nahrajete do registru (například Docker Hub) a kdokoli si může stáhnout a spustit přesně stejnou verzi.
Na co si dát pozor
- Záměna image a kontejneru. Image je statická předloha. Kontejner je to, co běží. Jedna image, mnoho kontejnerů.
- Nafouklé image. Když začnete od těžké základní image, máte pomalé sestavení a větší prostor pro útok. Vyberte štíhlý základ a zkopírujte do něj jen to, co potřebujete.
- Zapečená hesla. Hesla a API klíče do image nepatří, protože si je přečte každý, kdo si ji stáhne. Předejte je až při spuštění.
- Špatné pořadí vrstev. Věci, které se mění zřídka, dejte v
Dockerfilenahoru, a věci, které se mění často (třeba váš kód), až dolů, aby vám mezipaměť skutečně pomáhala.
Související články
- Co je Docker a kontejnerizace? - Širší pohled na to, jak kontejnery balí a spouštějí software.
- Co je Docker Compose? - Jak spustit aplikaci složenou z více image a kontejnerů z jednoho souboru.
- Co je CI/CD? - Jak automatizovat stavbu, testování a vydání image.
Chcete být o krok napřed?
Nenechte si utéct naše nejlepší postřehy. Žádný spam, jen praktické analýzy, pozvánky na exkluzivní eventy a shrnutí podcastů přímo do vaší schránky.
