Table of Contents

Docker — посібник для початку роботи

Docker — це платформа для запуску застосунків в ізольованих контейнерах. Замість встановлювати ПЗ безпосередньо на сервер, ви пакуєте його з усіма залежностями в контейнер, який працює однаково будь-де. Сервер постачається з Docker Engine, Docker Compose і Portainer — вебінтерфейсом для керування контейнерами без командного рядка.


Крок 1 — перевірте, що Portainer працює

IP-адресу сервера й пароль root показано в розділі Server Information на вкладці Overview вашого сервера в клієнтському порталі. Portainer запускається автоматично під час першого завантаження. Відкрийте браузер і перейдіть за адресою:

https://your.server.ip:9443

Браузер покаже попередження безпеки щодо самопідписаного сертифіката — це нормально, перейдіть на сайт. Задайте пароль для облікового запису admin (щонайменше 12 символів). Після цього відкриється панель Portainer, де можна керувати контейнерами, розгортати стеки й відстежувати середовище Docker.

Якщо ви розмістили сервер за маршрутизатором VyOS у приватній мережі, налаштуйте переадресацію портів (порт 22 для SSH, порт 9443 для Portainer, а також порти, які відкривають ваші контейнери) або підключайтеся через VPN і звертайтеся до сервера за приватною IP.

Тайм-аут Portainer

З міркувань безпеки Portainer дає 5 хвилин на встановлення пароля після запуску контейнера. Якщо бачите “Your Portainer instance timed out”, підключіться через SSH і перезапустіть контейнер:

ssh root@your.server.ip
docker restart portainer

Потім знову відкрийте https://your.server.ip:9443 і створіть пароль.


Крок 2 — підключення через SSH

Для керування Docker з командного рядка підключіться до сервера:

ssh root@your.server.ip

Перевірте, що Docker працює:

docker --version
docker compose version
docker run hello-world

Якщо бачите “Hello from Docker!” — усе працює.


Крок 3 — запуск контейнерів

Запустіть контейнер із будь-якого образу з 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

Крок 4 — Docker Compose

Compose дає змогу описувати багатоконтейнерні застосунки в YAML-файлі. Приклад — Nginx і 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

Корисні команди Compose:

# View logs
docker compose logs -f

# Stop services
docker compose down

# Stop and remove volumes (deletes data!)
docker compose down -v

Після встановлення

Місце на диску

Образи Docker можуть швидко заповнити диск. Стежте за цим:

# 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

Оновлення

Щоб оновити Docker, Portainer і системні пакети:

# 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

Файрвол

SSH (порт 22) і Portainer (порт 9443) відкриті за замовчуванням. Коли ви публікуєте порти контейнерів (як-от -p 80:80), вони стають доступними з інтернету.

Перевірте, які порти відкривають ваші контейнери:

docker ps --format "table {{.Names}}\t{{.Ports}}"

Fail2Ban — захист від підбору паролів

Сервер постачається з Fail2Ban , попередньо налаштованим для захисту SSH від підбору паролів.

Правило Макс. спроб Тривалість блокування
SSH5 невдалих входів10 хвилин

Корисні команди:

# Check banned IPs
fail2ban-client status sshd

# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4

Якщо ви випадково заблокували себе, підключіться через VNC-консоль у клієнтській панелі й розблокуйте свою IP.

Керування сервісами

Docker працює як сервіс systemd. Типові команди:

# Check service status
systemctl status docker

# Restart Docker
systemctl restart docker

# View Docker logs
journalctl -u docker -f

Облікові дані сервера

Пароль адміністратора Portainer — той, який ви задали під час першого входу на https://your.server.ip:9443. Окремих облікових даних у Docker немає — доступом керує користувач root на сервері.


Встановлене ПЗ

Компонент Версія
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

Усунення проблем

Проблема Рішення
Portainer показує “timed out” Виконайте docker restart portainer через SSH, потім знову відкрийте https://IP:9443
Не вдається підключитися до демона Docker Можливо, Docker ще не запустився. Виконайте systemctl start docker
Контейнер не має доступу до інтернету Перезапустіть мережу Docker: systemctl restart docker
Порт уже використовується Перевірте, що його займає: ss -tlnp | grep :80
No space left on device (закінчилося місце на диску) Очистіть: docker system prune -a і перевірте командою df -h /
Забули пароль адміністратора Portainer Скиньте дані Portainer: docker stop portainer && docker rm portainer && docker volume rm portainer_data, потім створіть контейнер заново (див. розділ «Оновлення»)
Заблоковано Fail2Ban Розблокуйте свою IP через VNC-консоль у клієнтській панелі
Забули пароль root Скиньте його через VNC-консоль у клієнтській панелі