Preskočiť na obsah

Docker

Docker je platforma na kontajnerizáciu aplikácií. Umožňuje aplikáciu zabaliť do izolovaného „kontajnera“, ktorý obsahuje všetky potrebné knižnice, konfigurácie a runtime. Vďaka tomu aplikácia funguje rovnako na každom serveri, bez ohľadu na to, kde je spustená.

Na čo Docker slúži?

  • vytváranie izolovaných prostredí pre aplikácie
  • rýchle spúšťanie služieb bez zložitej inštalácie
  • vývoj softvéru (každý vývojár má rovnaké prostredie)
  • prevádzka databáz, webserverov, API či mikroslužieb
  • testovanie rôznych verzií aplikácií
  • automatizácia CI/CD pipeline (GitLab CI, GitHub Actions)
  • jednoduchá replikácia a škálovanie služieb

Docker výrazne znižuje riziko konfliktov medzi knižnicami a umožňuje spúšťať na jednom serveri mnoho rôznych aplikácií bez toho, aby sa navzájom ovplyvňovali.


Výhody Dockeru

  • extrémne rýchly štart (milisekundy až sekundy)
  • nízka spotreba zdrojov (zdieľané jadro OS)
  • jednoduchá prenositeľnosť – funguje všade rovnako
  • výborný pre DevOps a CI/CD
  • ideálny pre mikroslužby
  • jednoduché testovanie bez úprav hostiteľského systému
  • možnosť mať viac aplikácií na jednom serveri bez konfliktov

Nevýhody Dockeru

  • nižšia izolácia než plnohodnotný virtuálny stroj
  • nie je vhodný pre desktopové prostredia alebo plnohodnotné OS
  • zdieľa jadro OS, takže nie všetky aplikácie sú kompatibilné
  • neposkytuje automatické škálovanie ani self-healing
  • kontajnery sú krátkodobé, ak ich neriadi orchestrátor

Docker je výborný pre aplikácie — nie pre „celé operačné systémy”.


Kubernetes

Kubernetes (K8s) je orchestrátor kontajnerov. Nevytvára kontajnery ako Docker, ale riadi ich životný cyklus, škálovanie, dostupnosť a komunikáciu.

Zjednodušene:

Docker = balenie a spúšťanie aplikáciíKubernetes = správa stoviek až tisícov Docker kontajnerov

Kubernetes rieši problémy, ktoré Docker sám nedokáže:

  • automatické reštarty pri chybe
  • škálovanie aplikácií (viac kontajnerov keď je väčšia záťaž)
  • balancovanie requests medzi kontajnermi
  • self-healing (ak kontajner padne, systém ho nahradí)
  • roll-out / roll-back verzií aplikácií
  • správu konfigurácií a tajomstiev
  • networking medzi službami
  • prácu v clustri viacerých serverov

Kubernetes je ideálny pre veľké, cloudové, moderné aplikácie — mikroservisy, API systémy, škálovateľné služby a CI/CD prostredia.


Ako spolu súvisia Docker a Kubernetes?

Docker umožňuje vytvoriť kontajner. Kubernetes tieto kontajnery spúšťa, sleduje, presúva, nahrádza, škáluje a udržiava v chode.

Docker by bez orchestrácie nebol vhodný pre veľké aplikácie. Kubernetes bez Dockeru (alebo iného runtime) by nemal čo spustiť.

Ich spojenie funguje takto:

  • Docker vytvorí image
  • Kubernetes tento image stiahne
  • Kubernetes spustí kontajnery podľa definície (Deployment, StatefulSet…)
  • Kubernetes sleduje zdravie kontajnerov
  • Keď kontajner spadne, Kubernetes ho automaticky nahradí
  • Keď narastie záťaž, Kubernetes pridá ďalšie kópie

Rozdiely medzi Docker a Kubernetes

Oblasť Docker Kubernetes
Primárny účel Kontajnerizácia aplikácie Orchestrácia kontajnerov
Spustenie Jednotlivé kontajnery Tisíce kontajnerov naraz
Ovládanie Manuálne / Compose Automatické, inteligentné
Zotavenie pri páde Žiadne Self-healing
Škálovanie Základné Automatické (HPA)
Aktualizácie Manuálne Rolling updates + rollback
Sieť Jednoduchá Rozsiahla virtuálna sieť
Použitie vývoj, testovanie, menšie služby veľké systémy, produkcia, microservices

Kedy použiť Docker / Kubernetes?

🟦 Použi Docker, ak:

  • chceš rýchlo spustiť aplikáciu
  • testuješ vývoj alebo knižnice
  • prevádzkuješ menší projekt
  • potrebuješ izolovať prostredie
  • chceš jednoduchú konfiguráciu na jednom serveri

🟧 Použi Kubernetes, ak:

  • potrebujete škálovať aplikácie
  • máte mikroslužby alebo veľké API
  • chcete vysoko dostupné systémy
  • potrebujete automatizáciu, monitoring, self-healing
  • aplikácia musí bežať bez výpadkov