Toto je starší verze dokumentu!
Docker (Kontejnerizace)
Docker je open-source platforma, která umožňuje vývojářům balit aplikace a jejich závislosti do izolovaných kontejnerů. Na rozdíl od klasické virtualizace, která virtualizuje celý hardware, Docker využívá sdílené jádro hostitelského operačního systému, což ho činí extrémně lehkým a rychlým.
### 1. Rozdíl mezi Virtuálním strojem (VM) a Kontejnerem Zatímco VM obsahuje celý operační systém (včetně jádra), kontejner sdílí jádro s hostitelem a izoluje pouze procesy na úrovni uživatelského prostoru.
| Vlastnost | Virtuální stroj (VM) | Docker Kontejner |
|---|---|---|
| Rychlost startu | Minuty | Sekundy / Milisekundy |
| Velikost | Gigabajty (GB) | Megabajty (MB) |
| Izolace | Úplná (vlastní kernel) | Procesní (sdílené jádro) |
| Režie (Overhead) | Vysoká | Minimální |
### 2. Základní komponenty
- Docker Engine: Jádro systému (démon), které spravuje kontejnery.
- Dockerfile: Textový soubor s instacemi pro sestavení obrazu.
- Image (Obraz): Neměnná šablona (předpis), ze které se spouštějí kontejnery.
- Container (Kontejner): Běžící instance obrazu.
- Docker Hub: Veřejný registr (úložiště) hotových obrazů (např. Nginx, MySQL, Python).
### 3. Workflow: Build → Ship → Run Proces práce s Dockerem se skládá ze tří kroků:
1. **Build:** Vytvoření obrazu z Dockerfile. 2. **Ship:** Nahrání obrazu do registru (Docker Hub nebo privátní). 3. **Run:** Stažení a spuštění kontejneru na cílovém serveru.
### 4. Ukázka Dockerfile Příklad jednoduchého souboru pro spuštění webové aplikace v Pythonu:
# Základní obraz FROM python:3.9-slim # Nastavení pracovního adresáře WORKDIR /app # Kopírování souborů COPY . . # Instalace závislostí RUN pip install -r requirements.txt # Port, na kterém aplikace naslouchá EXPOSE 5000 # Příkaz pro spuštění CMD ["python", "app.py"]
### 5. Základní příkazy CLI
| Příkaz | Popis |
|---|---|
docker build -t moje-aplikace . | Sestaví obraz z aktuálního adresáře. |
docker run -d -p 80:5000 moje-aplikace | Spustí kontejner na pozadí a namapuje porty. |
docker ps | Seznam běžících kontejnerů. |
docker images | Seznam stažených obrazů. |
docker stop <id> | Zastaví běžící kontejner. |
docker rm -f $(docker ps -aq) | Smaže všechny kontejnery v systému. |
### 6. Orchestrace Když počet kontejnerů naroste, je obtížné je spravovat ručně. K tomu slouží nástroje pro orchestraci:
- Docker Compose: Pro definici aplikací složených z více kontejnerů (např. web + DB) v jednom YAML souboru.
- Kubernetes (K8s): Komplexní platforma pro automatizaci nasazování, škálování a správu kontejnerových clusterů.
Důležité: Docker kontejnery jsou z principu ephemerální (pomíjivé). Pokud dojde ke smazání kontejneru, všechna data uvnitř jsou ztracena. Pro trvalé uložení dat je nutné použít Volumes (svazky).
