Table of Contents

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
SSH5 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
Ubuntu24.04 LTS
Docker CE29.3.0
Docker Compose5.1.0
Docker Buildx0.31.1
containerd2.2.2
Portainer CE2.39.0
Fail2Ban1.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