Uživatelské nástroje

Nástroje pro tento web


it:sw:docker

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:

  • Virtuální stroj: Obsahuje celý vlastní operační systém (Guest OS), což zabírá gigabyty místa a vyžaduje hodně RAM. Běží nad Hypervizorem.
  • Docker kontejner: Sdílí jádro (Kernel) hostitelského systému. Obsahuje pouze aplikaci a její knihovny. Díky tomu je kontejner o řád menší a startuje v řádu milisekund.

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

it/sw/docker.txt · Poslední úprava: autor: admin