Kontejnerizace a virtualizace na úrovni OS
Aplikace často funguje na jednom počítači, ale ne na jiném.
Důvodem bývají jiné verze knihoven, nastavení nebo operačního systému.
Docker zabalí aplikaci i její prostředí do malé, přenositelné krabičky.
Krabička se jmenuje kontejner.
Všechno cestuje společně. Hostitelský počítač zůstává čistší.
Izolované prostředí pro jeden proces nebo službu.
Sdílí jádro hostitelského systému, proto startuje rychle.
Kontejner není celý nový počítač.
Je to hlavně pohodlný způsob, jak spouštět procesy odděleně.
docker run.Služba na pozadí, která vytváří a spravuje kontejnery.
Katalog, odkud stahujeme hotové image, například Docker Hub.
Stejný image můžeme použít u vývojáře, při testu i v produkci.
Připravený kontejner spustíme jedním příkazem.
| Vlastnost | Virtuální stroj (VM) | Docker kontejner |
|---|---|---|
| Typ virtualizace | Hardwareová (Hypervizor) | Operačního systému (Jádro OS) |
| Velikost instalačního souboru (Debian) | ~ 3.7 GB | ~ 117 MB |
| Využití RAM na idle | ~ 250 MB | ~ 5 MB |
| Start-up čas | Desítky sekund | Sekundy až milisekundy |
Image je připravená šablona, ze které kontejner vznikne.
Příklady: nginx, ubuntu, python.
Kontejner je spuštěná instance image.
Stejnou šablonu můžeme spustit vícekrát.
-v /host/path:/container/path).Kontejner je dočasný.
Když ho smažeme, změny uvnitř mohou zmizet také.
Volume uloží data mimo život kontejneru.
docker run -v ./data:/app/data moje-aplikace
Levý konec je složka na počítači. Pravý konec je složka v kontejneru.
-p): Přesměrování portu z hostitele do kontejneru.-p 8080:80 zpřístupní web z kontejneru (port 80) na hostitelském portu 8080.Aplikace uvnitř kontejneru poslouchá například na portu 80.
Bez otevřených dveří ji prohlížeč z hostitele neuvidí.
-p 8080:80?Port vlevo je na počítači, port vpravo uvnitř kontejneru.
debian:latest).apt install).
FROM debian:latest
RUN apt update && apt install -y curl
RUN mkdir /app
WORKDIR /app
COPY ./script.sh .
RUN chmod +x script.sh
RUN useradd appuser
USER appuser
CMD ["/app/script.sh"]
FROM nginx:alpine
FROM říká, z jakého image začínáme.
WORKDIR /app
COPY . .
WORKDIR nastaví složku. COPY do ní zkopíruje projekt.
| Instrukce | Kdy běží? | Příklad |
|---|---|---|
RUN | při buildu | instalace balíčku |
CMD | po startu | spuštění serveru |
V Kali Linuxu je Docker v oficiálních repozitářích:
# 1. Instalace Dockeru a Docker Compose
sudo apt update
sudo apt install -y docker.io docker-compose
# 2. Povolení automatického spouštění služby po startu
sudo systemctl enable --now docker
# 3. Přidání uživatele do skupiny docker
sudo usermod -aG docker $USER
newgrp docker
docker --version
Docker odpoví verzí. Když ne, není nainstalovaný nebo neběží služba.
docker pull ubuntudocker images
Příkaz vypíše image uložené lokálně.
docker build -t moje-aplikace .
Image sestavíme z Dockerfile v aktuální složce.
docker run --rm hello-world
run vytvoří a spustí kontejner. --rm ho po skončení uklidí.
Interaktivní spustění kontejneru s terminálem:
docker run -it --rm ubuntu bash
Spuštění na pozadí (detached mode) s portem:
docker run -d -p 8080:80 --name muj-web nginx
docker ps ukáže běžící kontejnery.docker stop <id>
docker rm <id>
Nejdřív kontejner zastavíme, potom odstraníme.
docker logs <id>
Logy jsou první místo, kam se podíváme při chybě.
docker-compose.yml.Do jednoho souboru zapíšeme, co má běžet a jak jsou služby propojené.
Nejčastěji se jmenuje compose.yaml nebo docker-compose.yml.
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: superheslo
docker-compose up -ddocker-compose ps / docker-compose logsdocker-compose downdocker compose up -d
docker compose ps
docker compose down
Spustit, zkontrolovat, zastavit.
nginx na portu 8080.docker ps.