Sobes.tech
Junior

Čo je obraz v kontexte kontajnerizácie a aké úrovne (vrstvy) existujú v obraze?

sobes.tech AI

Odpoveď od AI

Obraz (alebo image) v kontajnerizácii je nezmeniteľný, ľahký, samostatný, spustiteľný balík softvéru, ktorý obsahuje všetko potrebné na spustenie aplikácie: kód, prostredie na spustenie, systémové nástroje, knižnice a nastavenia. V podstate je to "snímka" súborového systému a konfigurácie, z ktorej sa vytvárajú kontajnery.

Úrovne (vrstvy) obrazu sú oddelené, iba na čítanie súborové systémy, ktoré obraz tvoria. Každá vrstva predstavuje súbor zmien v porovnaní s predchádzajúcou vrstvou. Sú stavané na sebe, čím tvoria úplný súborový systém obrazu. Výhody vrstiev:

  • Efektivita: Vrstvy sa cache-ujú a znovu používajú medzi obrazmi, čo znižuje diskový priestor a zrýchľuje zostavovanie.
  • Modularita: Zmeny v aplikácii alebo v základnom operačnom systéme ovplyvňujú iba hornú vrstvu, bez zásahu do spodných.
  • Zdieľanie: Viaceré obrazy môžu používať spoločné základné vrstvy, napríklad vrstvu operačného systému.

Typická štruktúra vrstiev:

  1. Základná vrstva: Často obsahuje minimálny obraz OS (napríklad Alpine, Ubuntu Base).
  2. Závislostné vrstvy: Pridávajú sa balíky ako knižnice, interpretátory (napríklad Python, Node.js).
  3. Vrstva aplikácie: Pridáva sa kód aplikácie.
  4. Konfiguračná/metadátová vrstva: Popisuje, ako má byť aplikácia spustená (ENTRYPOINT, CMD).

Každý príkaz v Dockerfile zvyčajne vytvára novú vrstvu obrazu. Napríklad, príkaz RUN vykonáva príkazy a ukladá výsledok ako novú vrstvu.

# Základná vrstva
FROM ubuntu:latest

# Závislostné vrstvy
RUN apt-get update && apt-get install -y curl

# Vrstva aplikácie
COPY . /app
WORKDIR /app

# Konfiguračná vrstva
CMD ["node", "app.js"]