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.