Sobes.tech
Junior

Mis on pilt ja konteineriseerimise kontekstis ja millised tasemed (kihid) pildil on olemas?

sobes.tech AI

Vastus AI-lt

Konteineriseerimise pilt (image) on muutumatu, kerge, iseseisev, täidetav tarkvarapakett, mis sisaldab kõike, mida rakenduse käivitamiseks on vaja: koodi, täitmis- või jookskkeskkonda, süsteemivahendeid, teeke ja seadistusi. Põhimõtteliselt on see "pildifailide" ja konfiguratsiooni "võtmehetk", millest konteinerid luuakse.

Pildi (kihtide) tasemed on eraldi, ainult lugemiseks mõeldud failisüsteemid, millest pilt koosneb. Iga kiht on kogum muudatustest võrreldes eelneva kihiga. Need ehitatakse üksteise peale, moodustades täieliku pildifailisüsteemi. Kihtide eelised:

  • Tõhusus: Kihtide vahemälust (cache) kasutatakse korduvkasutust, mis vähendab kettaruumi ja kiirendab ehitamist.
  • Modulaarsus: Muudatused rakenduses või põhiteegis kajastuvad ainult ülemises kihis, mitte alumises.
  • Jagamine: Mitmed pildid võivad kasutada ühiseid põhikihti, näiteks operatsioonisüsteemi kihti.

Tüüpiline kihtide struktuur:

  1. Põhikiht: Tavaliselt sisaldab minimaalset operatsioonisüsteemi pilti (näiteks Alpine, Ubuntu Base).
  2. Sõltuvuste kihid: Lisatakse selliseid pakette nagu teegid, tõlgid (näiteks Python, Node.js).
  3. Rakenduse kiht: Lisatakse rakenduse kood.
  4. Seadistuste / metaandmete kiht: Kirjeldab, kuidas rakendus peaks käivituma (ENTRYPOINT, CMD).

Iga Dockerfile juhis loob tavaliselt uue kihi. Näiteks käsk RUN täidab käske ja salvestab tulemuse uue kihina.

# Põhikiht
FROM ubuntu:latest

# Sõltuvuste kihid
RUN apt-get update && apt-get install -y curl

# Rakenduse kiht
COPY . /app
WORKDIR /app

# Seadistuste kiht
CMD ["node", "app.js"]