Docker - pradžios vadovas
Docker yra platforma programoms paleisti izoliuotuose konteineriuose. Užuot diegę programinę įrangą tiesiai serveryje, supakuojate ją su visomis priklausomybėmis į konteinerį, kuris visur veikia vienodai. Šiame serveryje yra Docker Engine, Docker Compose ir Portainer – žiniatinklio sąsaja konteineriams valdyti be komandinės eilutės.
1 žingsnis – Patikrinkite, ar veikia Portainer
Jūsų serverio IP adresas ir root slaptažodis nurodyti kliento portale, serverio skirtuko Overview skiltyje Server Information. Portainer pasileidžia automatiškai per pirmąjį paleidimą. Atidarykite naršyklę ir eikite į:
https://your.server.ip:9443
Naršyklė parodys saugumo įspėjimą dėl savarankiškai pasirašyto sertifikato – tai normalu, tęskite į svetainę. Nustatykite slaptažodį paskyrai admin (ne mažiau kaip 12 simbolių). Po to pamatysite Portainer skydelį, kuriame galite valdyti konteinerius, diegti stekus ir stebėti Docker aplinką.
Jei serverį patalpinote už VyOS maršrutizatoriaus privačiame tinkle, galite arba sukonfigūruoti prievadų peradresavimą (22 prievadas SSH, 9443 prievadas Portainer ir prievadai, kuriuos atveria jūsų konteineriai), arba prisijungti per VPN ir pasiekti serverį privačiu IP.
Portainer laiko limitas
Saugumo sumetimais Portainer duoda 5 minutes slaptažodžiui nustatyti po konteinerio paleidimo. Jei matote „Your Portainer instance timed out”, prisijunkite per SSH ir paleiskite konteinerį iš naujo:
ssh root@your.server.ip
docker restart portainer
Tada vėl atidarykite https://your.server.ip:9443 ir sukurkite slaptažodį.
2 žingsnis – Prisijungimas per SSH
Norėdami valdyti Docker komandine eilute, prisijunkite prie serverio:
ssh root@your.server.ip
Patikrinkite, ar Docker veikia:
docker --version
docker compose version
docker run hello-world
Jei matote „Hello from Docker!” – viskas veikia.
3 žingsnis – Konteinerių paleidimas
Paleiskite konteinerį iš bet kurio Docker Hub atvaizdo:
# 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
4 žingsnis – Docker Compose
Compose leidžia aprašyti kelių konteinerių programas YAML faile. Pavyzdys – Nginx ir 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
Naudingos Compose komandos:
# View logs
docker compose logs -f
# Stop services
docker compose down
# Stop and remove volumes (deletes data!)
docker compose down -v
Po įdiegimo
Vieta diske
Docker atvaizdai gali greitai užimti disko vietą. Stebėkite ją:
# 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
Atnaujinimai
Docker, Portainer ir sistemos paketų atnaujinimas:
# 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
Ugniasienė
SSH (22 prievadas) ir Portainer (9443 prievadas) pagal numatytuosius nustatymus atviri. Kai paskelbiate konteinerių prievadus (pvz., -p 80:80), jie tampa pasiekiami iš interneto.
Patikrinkite, kuriuos prievadus atveria jūsų konteineriai:
docker ps --format "table {{.Names}}\t{{.Ports}}"
Fail2Ban – apsauga nuo slaptažodžių spėjimo atakų
Jūsų serveryje įdiegta Fail2Ban iš anksto sukonfigūruotas apsaugoti SSH nuo slaptažodžių spėjimo atakų.
| Taisyklė | Maks. bandymų | Blokavimo trukmė |
|---|---|---|
| SSH | 5 nesėkmingi prisijungimai | 10 minučių |
Naudingos komandos:
# Check banned IPs
fail2ban-client status sshd
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
Jei netyčia užsiblokavote, prisijunkite per VNC konsolę kliento skydelyje ir atblokuokite savo IP.
Paslaugų valdymas
Docker veikia kaip systemd paslauga. Dažnos komandos:
# Check service status
systemctl status docker
# Restart Docker
systemctl restart docker
# View Docker logs
journalctl -u docker -f
Serverio prisijungimo duomenys
Portainer administratoriaus slaptažodis yra tas, kurį nustatėte pirmą kartą prisijungdami adresu https://your.server.ip:9443. Pats Docker neturi atskirų prisijungimo duomenų – prieigą valdo serverio naudotojas root.
Įdiegta programinė įranga
| Komponentas | Versija |
|---|---|
| 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 |
Trikčių šalinimas
| Problema | Sprendimas |
|---|---|
| Portainer rodo „timed out” | Paleiskite docker restart portainer per SSH, tada vėl atidarykite https://IP:9443 |
| Nepavyksta prisijungti prie Docker demono | Docker galbūt dar nepasileido. Paleiskite systemctl start docker |
| Konteineris negali pasiekti interneto | Iš naujo paleiskite Docker tinklą: systemctl restart docker |
| Prievadas jau naudojamas | Patikrinkite, kas jį naudoja: ss -tlnp | grep :80 |
| No space left on device | Išvalykite: docker system prune -a ir patikrinkite su df -h / |
| Pamiršote Portainer administratoriaus slaptažodį | Atkurkite Portainer duomenis: docker stop portainer && docker rm portainer && docker volume rm portainer_data, tada iš naujo sukurkite konteinerį (žr. skiltį Atnaujinimai) |
| Užblokavo Fail2Ban | Atblokuokite savo IP per VNC konsolę kliento skydelyje |
| Pamiršote root slaptažodį | Atkurkite jį per VNC konsolę kliento skydelyje |