Docker: Kontejnerizace a izolace
Docker umožňuje spouštět aplikace v izolovaných prostředích zvaných kontejnery. Na rozdíl od virtuálních strojů jsou kontejnery extrémně lehké, rychle startují a sdílejí jádro operačního systému hostitele.
1. Kontejner vs. Virtuální stroj (VM)
Hlavní rozdíl spočívá v tom, co všechno se izoluje:
—
2. Základní pojmy Dockeru
Abychom mohli s Dockerem pracovat, musíme pochopit jeho tři pilíře:
Dockerfile: Textový soubor s instrukcemi, jak má být aplikace sestavena (např. „použij Python 3.9“, „zkopíruj kód“, „nainstaluj knihovny“).
Image (Obraz): Neaktivní šablona vytvořená z Dockerfile. Je to „zmrazený“ stav aplikace připravený ke spuštění.
Container (Kontejner): Běžící instance obrazu. Jeden obraz můžete spustit v deseti kontejnerech najednou, každý bude mít vlastní izolované prostředí.
—
3. Jak Docker zajišťuje izolaci?
Docker využívá pokročilé funkce linuxového jádra, aby zajistil, že procesy v kontejneru nevidí ven a naopak:
Namespaces: Zajišťují, že kontejner má vlastní pohled na systém (vlastní procesy, síťové rozhraní, uživatele).
Control Groups (cgroups): Omezují zdroje. Můžete říct, že tento kontejner nesmí využít více než 512 MB RAM a 10 % CPU.
Chroot / Union File System: Kontejner vidí jen svůj vlastní souborový systém a nemá přístup k souborům hostitele (pokud mu to explicitně nepovolíte přes tzv. Volumes).
—
4. Praktické výhody pro vývoj a provoz
Konzistence: Vývojář, tester i produkční server spouštějí identický kontejner.
Snadné škálování: Potřebujete větší výkon? Jednoduše spustíte další instance kontejneru.
Čistý systém: Instalujete software do kontejneru, nikoliv přímo do operačního systému. Když aplikaci smažete, v systému nezůstane žádný „nepořádek“.
—
5. Docker Compose: Více kontejnerů najednou
Moderní aplikace se skládají z více částí (např. webový server + databáze + cache). Docker Compose umožňuje definovat celou tuto infrastrukturu v jednom YAML souboru a spustit ji jediným příkazem.
# Příklad docker-compose.yml
services:
web:
image: my-python-app
ports:
- "80:80"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: secret
Související články:
Tagy: it docker containers devops virtualization infrastructure