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