Docker - ghid de inițiere
Docker este o platformă pentru rularea aplicațiilor în containere izolate. În loc să instalați software direct pe server, îl împachetați cu toate dependențele într-un container care rulează la fel peste tot. Serverul include Docker Engine, Docker Compose și Portainer – o interfață web pentru administrarea containerelor fără linie de comandă.
Pasul 1 – Verificați funcționarea Portainer
Adresa IP și parola root a serverului sunt afișate în secțiunea Server Information din fila Overview a serverului în portalul clientului. Portainer pornește automat la prima pornire. Deschideți browserul și accesați:
https://your.server.ip:9443
Browserul va afișa un avertisment de securitate despre certificatul autosemnat – este normal, continuați spre site. Setați o parolă pentru contul admin (minimum 12 caractere). După aceea veți vedea panoul Portainer, unde puteți administra containere, implementa stack-uri și monitoriza mediul Docker.
Dacă ați plasat serverul în spatele unui router VyOS într-o rețea privată, puteți configura redirecționarea porturilor (portul 22 pentru SSH, portul 9443 pentru Portainer, plus porturile expuse de containere) sau vă puteți conecta prin VPN și accesa serverul pe IP-ul privat.
Timeout Portainer
Din motive de securitate, Portainer vă oferă 5 minute pentru a seta parola după pornirea containerului. Dacă vedeți „Your Portainer instance timed out”, conectați-vă prin SSH și reporniți containerul:
ssh root@your.server.ip
docker restart portainer
Apoi deschideți din nou https://your.server.ip:9443 și creați parola.
Pasul 2 – Conectarea prin SSH
Pentru administrarea Docker din linia de comandă, conectați-vă la server:
ssh root@your.server.ip
Verificați că Docker rulează:
docker --version
docker compose version
docker run hello-world
Dacă vedeți „Hello from Docker!” – totul funcționează.
Pasul 3 – Rularea containerelor
Porniți un container din orice imagine de pe 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
Pasul 4 – Docker Compose
Compose vă permite să definiți aplicații cu mai multe containere într-un fișier YAML. Exemplu – Nginx plus 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
Comenzi Compose utile:
# View logs
docker compose logs -f
# Stop services
docker compose down
# Stop and remove volumes (deletes data!)
docker compose down -v
După instalare
Spațiu pe disc
Imaginile Docker pot ocupa rapid spațiul pe disc. Urmăriți-l:
# 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
Actualizări
Pentru a actualiza Docker, Portainer și pachetele sistemului:
# 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 (portul 22) și Portainer (portul 9443) sunt deschise implicit. Când publicați porturi ale containerelor (de exemplu -p 80:80), acestea devin accesibile de pe internet.
Verificați ce porturi expun containerele:
docker ps --format "table {{.Names}}\t{{.Ports}}"
Fail2Ban – protecție împotriva atacurilor brute-force
Serverul dumneavoastră include Fail2Ban preconfigurat pentru a proteja SSH împotriva atacurilor brute-force.
| Regulă | Încercări maxime | Durata blocării |
|---|---|---|
| SSH | 5 autentificări eșuate | 10 minute |
Comenzi utile:
# Check banned IPs
fail2ban-client status sshd
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
Dacă vă blocați accidental, conectați-vă prin consola VNC din panoul clientului și deblocați-vă IP-ul.
Administrarea serviciilor
Docker rulează ca serviciu systemd. Comenzi uzuale:
# Check service status
systemctl status docker
# Restart Docker
systemctl restart docker
# View Docker logs
journalctl -u docker -f
Datele de acces la server
Parola de administrator Portainer este cea setată la prima autentificare pe https://your.server.ip:9443. Docker nu are date de acces separate – accesul este controlat de utilizatorul root de pe server.
Software inclus
| Componentă | Versiune |
|---|---|
| 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 |
Depanare
| Problemă | Soluție |
|---|---|
| Portainer afișează „timed out” | Rulați docker restart portainer prin SSH, apoi deschideți din nou https://IP:9443 |
| Nu se poate conecta la daemonul Docker | Este posibil ca Docker să nu fi pornit încă. Rulați systemctl start docker |
| Containerul nu are acces la internet | Reporniți rețeaua Docker: systemctl restart docker |
| Portul este deja folosit | Verificați ce îl folosește: ss -tlnp | grep :80 |
| No space left on device | Curățare: docker system prune -a și verificați cu df -h / |
| Ați uitat parola de administrator Portainer | Resetați datele Portainer: docker stop portainer && docker rm portainer && docker volume rm portainer_data, apoi recreați containerul (vedeți secțiunea Actualizări) |
| Blocat de Fail2Ban | Deblocați-vă IP-ul prin consola VNC din panoul clientului |
| Ați uitat parola root | Resetați-o prin consola VNC din panoul clientului |