Sobes.tech
Junior

Na jakých klíčových vlastnostech je Docker založen?

sobes.tech AI

Odpověď od AI

Klíčové vlastnosti Dockeru:

  • Izolace procesů: Kontejnery jsou přirozeně izolované od sebe navzájem a od hostitelského systému. To je zajištěno pomocí mechanismů jádra Linuxu, jako jsou namespaces (PID, NET, IPC, MNT, UTS) a cgroups (pro omezení zdrojů CPU, paměti, I/O).

  • Obrázky: Docker obrázek je neměnitelný, vrstvený artefakt, který obsahuje vše potřebné pro spuštění aplikace: kód, knihovny, závislosti, nástroje a konfigurační soubory. Obrázky jsou vytvářeny podle principu "vrstva na vrstvě", což umožňuje opětovné použití společných komponent a úsporu místa.

  • Kontejnery: Kontejner je běžící instance obrázku. Je lehký, přenosný a obsahuje běžící aplikaci. Kontejnery lze rychle spustit, zastavit, přesunout a škálovat.

  • Dockerfile: Soubor Dockerfile obsahuje sadu instrukcí, které popisují proces sestavení Docker obrázku. Jedná se o deklarativní přístup k tvorbě obrázků, který zajišťuje reprodukovatelnost a automatizaci.

    # Příklad Dockerfile
    FROM alpine:3.14 // Základní obrázek
    RUN apk add --no-cache nginx // Instalace balíčků
    COPY html/ /usr/share/nginx/html/ // Kopírování souborů
    EXPOSE 80 // Otevření portu
    CMD ["nginx", "-g", "daemon off;"] // Příkaz při spuštění kontejneru
    
  • Vrstvený souborový systém: Docker používá Union File Systems (AUFS, OverlayFS), které umožňují vytvářet obrázky z vrstev. Každá vrstva představuje sadu změn ve srovnání s předchozí vrstvou. Tato vlastnost umožňuje rychlé vytváření obrázků, cachování vrstev a efektivní využití diskového prostoru.

  • Docker registry: Docker registry (například Docker Hub, GCR, ACR) slouží k ukládání a distribuci Docker obrázků. Usnadňuje výměnu obrázků mezi vývojáři, týmy a prostředími.

  • Přenositelnost: Obrázky a kontejnery jsou navrženy tak, aby byly přenosné. Obrázek vytvořený na jedné platformě může být spuštěn na jakékoli jiné platformě, kde je nainstalován Docker, bez nutnosti opětovného nastavování závislostí.

  • Rychlý start: Spuštění kontejneru je podstatně rychlejší než spuštění virtuálního stroje, díky absenci nutnosti načítání kompletního operačního systému.

  • Efektivní využití zdrojů: Kontejnery efektivněji využívají zdroje hostitelského systému než virtuální stroje, protože nevyžadují přidělení samostatných jader CPU.