Kontejnery a image

Kontejnery a image

Kontejner vs. virtuální stroj

graph TB subgraph VM H1[Hardware] --> HV[Hypervizor] HV --> G1[Guest OS + aplikace] HV --> G2[Guest OS + aplikace] end subgraph Kontejnery H2[Hardware] --> OS[Jádro hostitele] OS --> CR[Container runtime] CR --> C1[Aplikace] CR --> C2[Aplikace] end

Kontejner je proces nad jádrem hostitele, izolovaný namespacy a omezený cgroupami. Žádný hostovaný OS, takže start trvá milisekundy.

Image

Read-only šablona složená z vrstev; každá instrukce v Dockerfile přidá jednu. Vrstvy se sdílejí a cachují. Běžící kontejner přidá navrch tenkou zapisovatelnou vrstvu, která zmizí spolu s kontejnerem – proto data patří na volume.

graph BT L1[základní vrstvy nginx:1.27] --> L3[COPY obsah webu] L3 --> RW[zapisovatelná vrstva kontejneru]

Sítě – čtyři režimy

RežimPoužití
bridgevýchozí; privátní síť na hostiteli, publikované porty přes NAT
hostkontejner sdílí síťový stack hostitele
nonežádná síť
containersdílení síťového namespace jiného kontejneru – přesně tohle dělá pod

Kontejnery na vlastní síti se najdou podle jména. Kubernetes dělá totéž, jen to jméno funguje dál i po výměně kontejneru. Tomu se říká Service.

Perzistence dat

  • Volume – spravuje engine. Preferovaná varianta.
  • Bind mount – adresář hostitele. Vhodné pro vývoj.
  • tmpfs – jen v paměti.

Dockerfile

FROM nginx:1.27-alpine
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 80

Nahoru dávejte instrukce, které se mění nejméně: všechno pod změněnou vrstvou se staví znovu.

Reference