Docker - príručka pre začiatočníkov
Docker je platforma na spúšťanie aplikácií v izolovaných kontajneroch. Namiesto inštalácie softvéru priamo na server ho zabalíte so všetkými závislosťami do kontajnera, ktorý funguje všade rovnako. Server obsahuje Docker Engine, Docker Compose a Portainer – webové rozhranie na správu kontajnerov bez príkazového riadka.
Krok 1 – Overte, že Portainer funguje
IP adresa a heslo root vášho servera sú uvedené v sekcii Server Information na karte Overview vášho servera v klientskom portáli. Portainer sa spustí automaticky pri prvom štarte. Otvorte prehliadač a prejdite na:
https://your.server.ip:9443
Prehliadač zobrazí bezpečnostné varovanie kvôli certifikátu podpísanému samým sebou – je to normálne, pokračujte na web. Nastavte heslo pre účet admin (minimálne 12 znakov). Potom uvidíte nástenku Portainera, kde môžete spravovať kontajnery, nasadzovať stacky a sledovať prostredie Dockera.
Ak ste server umiestnili za router VyOS v privátnej sieti, môžete buď nastaviť presmerovanie portov (port 22 pre SSH, port 9443 pre Portainer a porty, ktoré sprístupňujú vaše kontajnery), alebo sa pripojiť cez VPN a pristupovať k serveru cez jeho privátnu IP.
Časový limit Portainera
Z bezpečnostných dôvodov vám Portainer dáva 5 minút na nastavenie hesla po spustení kontajnera. Ak uvidíte „Your Portainer instance timed out“, pripojte sa cez SSH a reštartujte kontajner:
ssh root@your.server.ip
docker restart portainer
Potom znova otvorte https://your.server.ip:9443 a vytvorte heslo.
Krok 2 – Pripojenie cez SSH
Na správu Dockera z príkazového riadka sa pripojte k serveru:
ssh root@your.server.ip
Overte, že Docker beží:
docker --version
docker compose version
docker run hello-world
Ak uvidíte „Hello from Docker!“ – všetko funguje.
Krok 3 – Spúšťanie kontajnerov
Spustite kontajner z ľubovoľné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 definovať viackontajnerové aplikácie v súbore YAML. Prí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žitočné príkazy Compose:
# View logs
docker compose logs -f
# Stop services
docker compose down
# Stop and remove volumes (deletes data!)
docker compose down -v
Po inštalácii
Miesto na disku
Obrazy Dockera môžu rýchlo zabrať miesto na disku. Sledujte 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
Aktualizácie
Aktualizácia Dockera, Portainera a systémových balíčkov:
# 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) sú v predvolenom stave otvorené. Keď zverejníte porty kontajnerov (napríklad -p 80:80), stanú sa dostupnými z internetu.
Zistite, ktoré porty vaše kontajnery sprístupňujú:
docker ps --format "table {{.Names}}\t{{.Ports}}"
Fail2Ban – ochrana proti útokom hrubou silou
Váš server obsahuje Fail2Ban predkonfigurovaný na ochranu SSH proti útokom hrubou silou.
| Pravidlo | Max. počet pokusov | Doba blokovania |
|---|---|---|
| SSH | 5 neúspešných prihlásení | 10 minút |
Užitočné príkazy:
# Check banned IPs
fail2ban-client status sshd
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
Ak sa omylom zablokujete, pripojte sa cez konzolu VNC v klientskom paneli a odblokujte svoju IP.
Správa služieb
Docker beží ako služba systemd. Bežné príkazy:
# Check service status
systemctl status docker
# Restart Docker
systemctl restart docker
# View Docker logs
journalctl -u docker -f
Prihlasovacie údaje servera
Heslo administrátora Portainera je to, ktoré ste nastavili pri prvom prihlásení na https://your.server.ip:9443. Docker sám nemá samostatné prihlasovacie údaje – prístup riadi používateľ root na serveri.
Zahrnutý softvér
| Komponent | Verzia |
|---|---|
| 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 |
Riešenie problémov
| Problém | Riešenie |
|---|---|
| Portainer hlási „timed out“ | Spustite docker restart portainer cez SSH a potom znova otvorte https://IP:9443 |
| Nedá sa pripojiť k démonu Dockera | Docker možno ešte nenabehol. Spustite systemctl start docker |
| Kontajner nemá prístup na internet | Reštartujte sieť Dockera: systemctl restart docker |
| Port sa už používa | Zistite, čo ho používa: ss -tlnp | grep :80 |
| No space left on device | Upratovanie: docker system prune -a a skontrolujte pomocou df -h / |
| Zabudnuté heslo administrátora Portainera | Resetujte dáta Portainera: docker stop portainer && docker rm portainer && docker volume rm portainer_dataa potom kontajner znova vytvorte (pozri sekciu Aktualizácie) |
| Zablokované službou Fail2Ban | Odblokujte svoju IP cez konzolu VNC v klientskom paneli |
| Zabudnuté heslo root | Obnovte ho cez konzolu VNC v klientskom paneli |