🟢 Beginner

Kontajnerizácia — Princípy a ekosystém

Kontajnerizácia je metóda virtualizácie na úrovni operačného systému, ktorá umožňuje spúšťať aplikácie v izolovaných prostrediach bez potreby plného virtuálneho stroja.


Kontajnery vs Virtuálne stroje

Vlastnosť Kontajner Virtuálny stroj
Štart Sekundy Minúty
Veľkosť MB GB
Izolácia Process-level Hardware-level
OS Zdieľaný kernel Vlastný OS
Výkon Takmer natívny Overhead hypervisora

Kontajnery sú ľahšie a rýchlejšie, VM poskytujú silnejšiu izoláciu.

Linux technológie pod kapotou

Kontajnery využívajú natívne Linux funkcie:

  • Namespaces — izolácia procesov, sieťovej konfigurácie, súborového systému a používateľov
  • cgroups — obmedzenie a meranie spotreby zdrojov (CPU, RAM, I/O)
  • Union filesystems — vrstvený súborový systém (OverlayFS) pre efektívne image

OCI štandardy

Open Container Initiative definuje štandardy pre:

  • Image Spec — formát kontajnerových images
  • Runtime Spec — ako sa kontajnery spúšťajú
  • Distribution Spec — ako sa images distribuujú

Container Runtime

  • containerd — priemyselný štandard (používa Docker aj K8s)
  • CRI-O — optimalizovaný pre Kubernetes
  • runc — nízkoúrovňový OCI runtime
  • Podman — rootless alternatíva k Docker daemon

Container Registry

Registry slúži na ukladanie a distribúciu images:

  • Docker Hub — verejný register
  • GitHub Container Registry (ghcr.io) — integrovaný s GitHub
  • Amazon ECR, Google GCR, Azure ACR — cloud registre
  • Harbor — self-hosted enterprise registry

Multi-stage Build

Optimalizácia veľkosti image:

# Build stage
FROM node:20 AS builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build

# Production stage
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html

Výsledný image obsahuje len produkčné súbory, nie build nástroje.

Bezpečnosť kontajnerov

  • Skenujte images na zraniteľnosti (Trivy, Snyk)
  • Používajte minimálne base images (Alpine, distroless)
  • Nespúšťajte procesy ako root
  • Podpisujte images (cosign, Notary)
  • Aktualizujte base images pravidelne

Budúcnosť

Trendy v kontajnerizácii:

  • WebAssembly (Wasm) — ľahšia alternatíva pre niektoré workloady
  • Kata Containers — VM-level izolácia s kontajnerovým rozhraním
  • Serverless containers — AWS Fargate, Google Cloud Run

Kontajnerizácia je základný stavebný kameň modernej cloudovej architektúry.