Table of Contents

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
SSH5 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
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

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