🟢 Beginner

Docker — Kontajnerizácia aplikácií

Docker je open-source platforma na vytváranie, distribúciu a spúšťanie aplikácií v izolovaných kontajneroch. Zmenil spôsob, akým vývojári balíčkujú a nasadzujú softvér.


Čo je kontajner?

Kontajner je ľahká, izolovaná jednotka, ktorá obsahuje aplikáciu a všetky jej závislosti — knižnice, runtime, konfiguračné súbory. Na rozdiel od virtuálnych strojov kontajnery zdieľajú jadro hostiteľského OS, čo ich robí rýchlejšími a efektívnejšími.

Kľúčové koncepty

Docker Image — šablóna (read-only), z ktorej sa vytvárajú kontajnery. Definuje sa cez Dockerfile.

Dockerfile — textový súbor s inštrukciami na zostavenie image. Príklad:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Docker Compose — nástroj na definovanie multi-kontajnerových aplikácií pomocou docker-compose.yml. Umožňuje spustiť celý stack jedným príkazom.

Docker Hub — verejný register pre zdieľanie Docker images.

Základné príkazy

  • docker build -t myapp . — zostaví image
  • docker run -d -p 8080:3000 myapp — spustí kontajner na pozadí
  • docker ps — zobrazí bežiace kontajnery
  • docker logs <id> — výpis logov kontajnera
  • docker exec -it <id> sh — interaktívny shell v kontajneri
  • docker-compose up -d — spustí celý stack

Prečo Docker?

  1. Konzistentné prostredie — "funguje u mňa" je minulosťou
  2. Rýchle nasadenie — sekundy namiesto minút
  3. Izolácia — aplikácie sa navzájom neovplyvňujú
  4. Škálovateľnosť — jednoduché horizontálne škálovanie
  5. CI/CD integrácia — automatizované buildy a deploymenty

Best Practices

  • Používajte multi-stage buildy na zmenšenie images
  • Minimalizujte počet vrstiev v Dockerfile
  • Používajte .dockerignore na vylúčenie nepotrebných súborov
  • Nikdy neukladajte secrets priamo do image
  • Používajte Alpine-based images pre menšiu veľkosť

Docker je základ moderného DevOps a je predpokladom pre orchestračné nástroje ako Kubernetes.