Skip to Content
🔥 Nová dokumentace BlazeHost.cz je online — prohlédnout

Docker

Docker balí aplikaci i její závislosti do kontejneru. Aplikace pak běží stejně na tvém notebooku i na VPS.

Instalace

Nainstaluj Docker

curl -fsSL https://get.docker.com | sudo sh

Přidej se do skupiny docker

sudo usermod -aG docker $USER

Odhlas se a přihlas znovu.

Ověř

docker run --rm hello-world

Členství ve skupině docker je fakticky rovné rootu. Kdo může spouštět kontejnery, může připojit kořenový adresář a získat plná práva. Nedávej ji uživatelům, kterým bys nedal sudo.

Základní pojmy

PojemVýznam
ImageŠablona, ze které vzniká kontejner
ContainerBěžící instance obrazu
VolumeTrvalé úložiště přežívající kontejner
NetworkVirtuální síť mezi kontejnery

Základní příkazy

# Bezici kontejnery docker ps # Vsechny vcetne zastavenych docker ps -a # Spusteni docker run -d --name web -p 8080:80 nginx # Logy docker logs -f web # Vstup do kontejneru docker exec -it web bash # Zastaveni a smazani docker stop web && docker rm web # Seznam obrazu docker images # Uklid nepouzivaneho docker system prune -a

docker system prune -a smaže všechny nepoužívané obrazy a sítě. Na serveru s více projekty ti zmizí i obrazy, které jen zrovna neběží.

Trvalá data

Data v kontejneru zmizí spolu s ním. Použij volume:

docker run -d \ --name db \ -e MYSQL_ROOT_PASSWORD=tajneheslo \ -v mysql-data:/var/lib/mysql \ -p 127.0.0.1:3306:3306 \ mysql:8

Zápis -p 127.0.0.1:3306:3306 zpřístupní port jen lokálně. Bez prefixu 127.0.0.1 bys databázi otevřel celému internetu, i kdyby ufw port blokoval.

Docker obchází ufw. Pravidla firewallu se na publikované porty kontejnerů neuplatní. Vždy publikuj na 127.0.0.1, pokud port nemá být veřejný.

Vlastní obraz

Dockerfile
FROM node:22-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --omit=dev COPY . . EXPOSE 3000 USER node CMD ["node", "server.js"]
docker build -t moje-app:1.0 . docker run -d -p 3000:3000 moje-app:1.0

Kopíruj package.json a instaluj závislosti před kopírováním zbytku kódu. Docker pak při změně kódu nemusí instalovat znovu.

Omezení zdrojů

docker run -d --memory=512m --cpus=1.0 --name app moje-app:1.0

Bez limitu může jeden kontejner spotřebovat celý VPS.

Tipy

  • Nespouštěj kontejnery jako root. Použij USER v Dockerfile.
  • Používej konkrétní tagy (node:22-alpine), ne latest.
  • Sleduj místo na disku. Obrazy a logy rostou rychle.

Poznámka

Docker vyžaduje VPS. Na herním hostingu není k dispozici.

Související články