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:
- Osnovni sloj: Često sadrži minimalnu sliku OS-a (npr. Alpine, Ubuntu Base).
- Slojevi zavisnosti: Dodaju se paketi poput biblioteka, interpretatora (npr. Python, Node.js).
- Sloj aplikacije: Dodaje se kod aplikacije.
- 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"]