Docker - průvodce pro začátečníky
Docker je platforma pro spouštění aplikací v izolovaných kontejnerech. Místo instalace softwaru přímo na server ho zabalíte se všemi závislostmi do kontejneru, který funguje všude stejně. Server obsahuje Docker Engine, Docker Compose a Portainer – webové rozhraní pro správu kontejnerů bez příkazového řádku.
Krok 1 – Ověřte, že Portainer funguje
IP adresa a heslo root vašeho serveru jsou uvedeny v sekci Server Information na kartě Overview vašeho serveru v klientském portálu. Portainer se spustí automaticky při prvním startu. Otevřete prohlížeč a přejděte na:
https://your.server.ip:9443
Prohlížeč zobrazí bezpečnostní varování kvůli certifikátu podepsanému sebou samým – to je normální, pokračujte na web. Nastavte heslo pro účet admin (minimálně 12 znaků). Poté uvidíte nástěnku Portaineru, kde můžete spravovat kontejnery, nasazovat stacky a sledovat prostředí Dockeru.
Pokud jste server umístili za router VyOS v privátní síti, můžete buď nastavit přesměrování portů (port 22 pro SSH, port 9443 pro Portainer a porty, které zpřístupňují vaše kontejnery), nebo se připojit přes VPN a přistupovat k serveru přes jeho privátní IP.
Časový limit Portaineru
Z bezpečnostních důvodů vám Portainer dává 5 minut na nastavení hesla po spuštění kontejneru. Pokud uvidíte „Your Portainer instance timed out“, připojte se přes SSH a restartujte kontejner:
ssh root@your.server.ip
docker restart portainer
Pak znovu otevřete https://your.server.ip:9443 a vytvořte heslo.
Krok 2 – Připojení přes SSH
Pro správu Dockeru z příkazového řádku se připojte k serveru:
ssh root@your.server.ip
Ověřte, že Docker běží:
docker --version
docker compose version
docker run hello-world
Pokud uvidíte „Hello from Docker!“ – vše funguje.
Krok 3 – Spouštění kontejnerů
Spusťte kontejner z libovolného obrazu z Docker Hub:
# Run an Nginx web server on port 80
docker run -d --name webserver -p 80:80 nginx
# View running containers
docker ps
# Stop and remove the container
docker stop webserver
docker rm webserver
Krok 4 – Docker Compose
Compose umožňuje definovat vícekontejnerové aplikace v souboru YAML. Příklad – Nginx a MySQL:
mkdir ~/myapp && cd ~/myapp
cat > docker-compose.yml <<'EOF'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: myapp
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
EOF
docker compose up -d
Užitečné příkazy Compose:
# View logs
docker compose logs -f
# Stop services
docker compose down
# Stop and remove volumes (deletes data!)
docker compose down -v
Po instalaci
Místo na disku
Obrazy Dockeru mohou rychle zabrat místo na disku. Hlídejte si ho:
# Check overall disk usage
df -h /
# Check Docker-specific disk usage
docker system df
# Clean up unused images, containers and networks
docker system prune -a
Aktualizace
Aktualizace Dockeru, Portaineru a systémových balíčků:
# Update system packages and Docker
apt update && apt upgrade -y
# Update Portainer to the latest version
docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
docker run -d --name portainer --restart=always \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Firewall
SSH (port 22) a Portainer (port 9443) jsou ve výchozím stavu otevřené. Když zveřejníte porty kontejnerů (například -p 80:80), stanou se dostupnými z internetu.
Zjistěte, které porty vaše kontejnery zpřístupňují:
docker ps --format "table {{.Names}}\t{{.Ports}}"
Fail2Ban – ochrana proti útokům hrubou silou
Váš server obsahuje Fail2Ban předkonfigurovaný k ochraně SSH proti útokům hrubou silou.
| Pravidlo | Max. počet pokusů | Doba blokace |
|---|---|---|
| SSH | 5 neúspěšných přihlášení | 10 minut |
Užitečné příkazy:
# Check banned IPs
fail2ban-client status sshd
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
Pokud se omylem zablokujete, připojte se přes konzoli VNC v klientském panelu a odblokujte svou IP.
Správa služeb
Docker běží jako služba systemd. Běžné příkazy:
# Check service status
systemctl status docker
# Restart Docker
systemctl restart docker
# View Docker logs
journalctl -u docker -f
Přihlašovací údaje serveru
Heslo administrátora Portaineru je to, které jste nastavili při prvním přihlášení na https://your.server.ip:9443. Docker sám nemá samostatné přihlašovací údaje – přístup řídí uživatel root na serveru.
Zahrnutý software
| Komponenta | Verze |
|---|---|
| Ubuntu | 24.04 LTS |
| Docker CE | 29.3.0 |
| Docker Compose | 5.1.0 |
| Docker Buildx | 0.31.1 |
| containerd | 2.2.2 |
| Portainer CE | 2.39.0 |
| Fail2Ban | 1.0.2 |
Řešení problémů
| Problém | Řešení |
|---|---|
| Portainer hlásí „timed out“ | Spusťte docker restart portainer přes SSH a pak znovu otevřete https://IP:9443 |
| Nelze se připojit k démonu Dockeru | Docker možná ještě nenaběhl. Spusťte systemctl start docker |
| Kontejner nemá přístup k internetu | Restartujte síť Dockeru: systemctl restart docker |
| Port je už používán | Zjistěte, co ho používá: ss -tlnp | grep :80 |
| No space left on device | Úklid: docker system prune -a a zkontrolujte pomocí df -h / |
| Zapomenuté heslo administrátora Portaineru | Resetujte data Portaineru: docker stop portainer && docker rm portainer && docker volume rm portainer_dataa pak kontejner znovu vytvořte (viz sekce Aktualizace) |
| Blokováno službou Fail2Ban | Odblokujte svou IP přes konzoli VNC v klientském panelu |
| Zapomenuté heslo root | Obnovte jej přes konzoli VNC v klientském panelu |