Sobes.tech
Junior

Na akých kľúčových vlastnostiach je Docker založený?

sobes.tech AI

Odpoveď od AI

Kľúčové vlastnosti Docker:

  • Izolácia procesov: Kontajnery sú svojou povahou izolované od seba a od host systému. To je zabezpečené pomocou mechanizmov Linux jadra, ako sú namespaces (PID, NET, IPC, MNT, UTS) a cgroups (na obmedzenie zdrojov CPU, pamäte, I/O).

  • Obrázky (Images): Docker obrázok je nemenný, vrstvený artefakt, ktorý obsahuje všetko potrebné na spustenie aplikácie: kód, knižnice, závislosti, nástroje a konfiguračné súbory. Obrázky sa stavajú podľa princípu "vrstvy na vrstvy", čo umožňuje opätovné použitie spoločných komponentov a šetrí miesto.

  • Kontajnery (Containers): Kontajner je spustiteľný exemplár obrázka. Je ľahký, prenosný a obsahuje spustenú aplikáciu. Kontajnery môžu byť rýchlo spustené, zastavené, premiestnené a škálované.

  • Dockerfile: Dockerfile je súbor obsahujúci sadu inštrukcií, ktoré opisujú proces stavenia Docker obrázka. Ide o deklaratívny prístup k vytváraniu obrázkov, ktorý zabezpečuje reprodukovateľnosť a automatizáciu procesu.

    # Príklad Dockerfile
    FROM alpine:3.14 // Základný obrázok
    RUN apk add --no-cache nginx // Inštalácia balíkov
    COPY html/ /usr/share/nginx/html/ // Kopírovanie súborov
    EXPOSE 80 // Otvorenie portu
    CMD ["nginx", "-g", "daemon off;"] // Príkaz pri spustení kontajnera
    
  • Vrstvený súborový systém (Layered Filesystem): Docker používa Union File Systems (AUFS, OverlayFS), ktoré umožňujú vytváranie obrázkov z vrstiev. Každá vrstva predstavuje súbor zmien v porovnaní s predchádzajúcou vrstvou. Táto vlastnosť umožňuje rýchle vytváranie obrázkov, cacheovanie vrstiev a efektívne využívanie diskového priestoru.

  • Docker Registry (Registry/Hub): Docker registry (napríklad Docker Hub, GCR, ACR) sa používajú na ukladanie a šírenie Docker obrázkov. To umožňuje výmenu obrázkov medzi vývojármi, tímami a prostrediami.

  • Prenosnosť: Obrázky a kontajnery sú navrhnuté tak, aby boli prenosné. Obrázok, vytvorený na jednej platforme, môže byť spustený na akejkoľvek inej platforme, kde je nainštalovaný Docker, bez potreby preinštalovania závislostí.

  • Rýchly štart: Spustenie kontajnera je podstatne rýchlejšie ako spustenie virtuálnej mašiny, vďaka absencii potreby načítania úplného operačného systému.

  • Efektívne využívanie zdrojov: Kontajnery využívajú zdroje hostiteľského systému efektívnejšie ako virtuálne stroje, pretože nevyžadujú vyčlenenie samostatných jadier operačného systému.