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.