Č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:
- Základná vrstva: Často obsahuje minimálny obraz OS (napríklad Alpine, Ubuntu Base).
- Závislostné vrstvy: Pridávajú sa balíky ako knižnice, interpretátory (napríklad Python, Node.js).
- Vrstva aplikácie: Pridáva sa kód aplikácie.
- 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"]