Junior
Co je to obraz v kontextu kontejnerizace a jaké úrovně (vrstvy) existují v obraze?
sobes.tech AI
Odpověď od AI
Obrázek (nebo image) v kontejnerizaci je nezměnitelný, lehký, samostatný, spustitelný balíček softwaru, který obsahuje vše potřebné k spuštění aplikace: kód, prostředí běhu, systémové nástroje, knihovny a konfigurace. V podstatě je to "snímek" souborového systému a konfigurace, ze kterých jsou vytvářeny kontejnery.
Úrovně (vrstvy) obrazu jsou oddělené, pouze pro čtení souborové systémy, které obraz tvoří. Každá vrstva představuje sadu změn ve srovnání s předchozí vrstvou. Jsou stavěny na sobě, čímž vytvářejí úplný souborový systém obrazu. Výhody vrstev:
- Efektivita: Vrstvy jsou ukládány do cache a znovu používány mezi obrazy, což snižuje diskový prostor a urychluje sestavení.
- Modularita: Změny v aplikaci nebo základním operačním systému ovlivňují pouze horní vrstvu, aniž by zasahovaly do spodních.
- Sdílení: Několik obrazů může sdílet společné základní vrstvy, například vrstvu operačního systému.
Typická struktura vrstev:
- Základní vrstva: Často obsahuje minimální obraz operačního systému (například Alpine, Ubuntu Base).
- Závislostní vrstvy: Přidávají balíčky, jako jsou knihovny, interprety (například Python, Node.js).
- Vrstva aplikace: Přidává kód aplikace.
- Konfigurační/metadatasní vrstva: Popisuje, jak má být aplikace spuštěna (ENTRYPOINT, CMD).
Každý příkaz v Dockerfile obvykle vytváří novou vrstvu obrazu. Například příkaz RUN spouští příkazy a ukládá výsledek jako novou vrstvu.
# Základní vrstva
FROM ubuntu:latest
# Závislostní vrstvy
RUN apt-get update && apt-get install -y curl
# Vrstva aplikace
COPY . /app
WORKDIR /app
# Konfigurační vrstva
CMD ["node", "app.js"]