Obsah
Container (Kontejnerizace)
Kontejner je lehká, samostatná a spustitelná balíková jednotka softwaru. Na rozdíl od tradiční virtualizace kontejnery nesimulují celý hardware, ale sdílejí jádro (kernel) hostitelského operačního systému. To z nich dělá extrémně efektivní nástroj pro moderní vývoj softwaru a architekturu mikroslužeb.
Jak kontejner funguje?
Kontejnerizace využívá funkce Linuxového jádra (jako jsou namespaces a cgroups) k izolaci procesů.
- Namespaces: Zajišťují, že kontejner vidí pouze své vlastní soubory, procesy a síťové rozhraní (izolace).
Hlavní výhody kontejnerů
- Přenositelnost: „Jednou napiš, spusť kdekoliv.“ Kontejner eliminuje problém „u mě na počítači to fungovalo“.
- Efektivita: Kontejnery startují v řádu milisekund a spotřebovávají minimum systémových prostředků oproti virtuálním strojům.
- Izolace: Pokud jeden kontejner spadne nebo je napaden, ostatní kontejnery na stejném serveru zůstávají v bezpečí a funkční.
- Škálovatelnost: Je velmi snadné spustit deset nebo tisíc kopií stejného kontejneru podle aktuálního vytížení aplikace.
Srovnání: Kontejnery vs. Virtuální stroje (VM)
| Vlastnost | Kontejnery | Virtuální stroje (VM) |
|---|---|---|
| Operační systém | Sdílejí jádro hostitele. | Každý má vlastní plnohodnotný OS (Guest OS). |
| Velikost | MB (velmi lehké). | GB (těžké). |
| Rychlost startu | Sekundy / Milisekundy. | Minuty. |
| Izolace | Na úrovni procesů (vysoká). | Na úrovni hardwaru (velmi vysoká). |
Ekosystém a nástroje
1. Docker
Nejpopulárnější nástroj pro tvorbu a správu kontejnerů. Definice kontejneru se provádí pomocí textového souboru Dockerfile, ze kterého se sestaví „Image“ (obraz).
2. Kubernetes (K8s)
Nástroj pro tzv. orchestraci. Když máte tisíce kontejnerů, potřebujete systém, který je bude automaticky spouštět, restartovat při chybě a rozdělovat mezi ně zátěž.
Praktické využití
- Mikroslužby: Rozdělení velké aplikace na mnoho malých kontejnerů (např. jeden pro přihlašování, druhý pro platby, třetí pro katalog).
- CI/CD: Automatické testování a nasazování kódu.
- Cloud-native aplikace: Aplikace navržené přímo pro běh v cloudech jako AWS, Azure nebo Google Cloud.
Související pojmy: Docker, Kubernetes, Virtualizace, Cloud Computing, Mikroslužby, Linux Kernel.
