Sobes.tech
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:

  1. Základní vrstva: Často obsahuje minimální obraz operačního systému (například Alpine, Ubuntu Base).
  2. Závislostní vrstvy: Přidávají balíčky, jako jsou knihovny, interprety (například Python, Node.js).
  3. Vrstva aplikace: Přidává kód aplikace.
  4. 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"]