Sobes.tech
Junior

Šta je slika u kontekstu kontejnerizacije i koje nivoe (slojeve) postoje u slici?

sobes.tech АИ

Одговор од АИ

Slika (ili image) u kontejnerizaciji je nepromenljiv, lagan, samostalan, izvršiv paket softvera koji uključuje sve što je potrebno za pokretanje aplikacije: kod, okruženje za izvršavanje, sistemski alati, biblioteke i podešavanja. U suštini, to je "snimak" datotečnog sistema i konfiguracije od kojih se kreiraju kontejneri.

Nivoi (slojevi) slike su odvojeni, samo za čitanje, sistemi datoteka koji čine sliku. Svaki sloj predstavlja skup promena u odnosu na prethodni sloj. Oni se grade jedan na drugom, formirajući potpuni sistem datoteka slike. Prednosti slojeva:

  • Efikasnost: Slojevi se keširaju i ponovo koriste između slika, što smanjuje prostor na disku i ubrzava izgradnju.
  • Modularnost: Promene u aplikaciji ili osnovnom operativnom sistemu utiču samo na gornji sloj, ne dirajući donje.
  • Deljenje: Više slika može koristiti zajedničke osnovne slojeve, na primer, sloj operativnog sistema.

Tipična struktura slojeva:

  1. Osnovni sloj: Često sadrži minimalnu sliku OS-a (npr. Alpine, Ubuntu Base).
  2. Slojevi zavisnosti: Dodaju se paketi poput biblioteka, interpretatora (npr. Python, Node.js).
  3. Sloj aplikacije: Dodaje se kod aplikacije.
  4. Sloj konfiguracije/metapodataka: Opisuje kako aplikacija treba da se pokrene (ENTRYPOINT, CMD).

Svaka instrukcija u Dockerfile obično kreira novi sloj slike. Na primer, komanda RUN izvršava komande i čuva rezultat kao novi sloj.

# Osnovni sloj
FROM ubuntu:latest

# Slojevi zavisnosti
RUN apt-get update && apt-get install -y curl

# Sloj aplikacije
COPY . /app
WORKDIR /app

# Sloj konfiguracije
CMD ["node", "app.js"]