Table of Contents

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ė
SSH5 nesėkmingi prisijungimai10 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
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

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