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 від підбору паролів.
| Правило | Макс. спроб | Тривалість блокування |
|---|---|---|
| SSH | 5 невдалих входів | 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 на сервері.
Встановлене ПЗ
| Компонент | Версія |
|---|---|
| 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 |
Усунення проблем
| Проблема | Рішення |
|---|---|
| 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-консоль у клієнтській панелі |