До основного вмісту

ISPmanager + Docker: керування контейнерами

ISPmanager 6 · 10.03.2025 · 4 хв читання
Ілюстрація до статті «ISPmanager + Docker: керування контейнерами»

ISPmanager 6 дозволяє керувати Docker-контейнерами поряд зі звичайними сайтами на одному сервері: панель розгортає модуль, а далі контейнери створюються та обслуговуються або через веб-інтерфейс, або напряму через docker у SSH. Розбираємо встановлення, створення контейнера, типові помилки та межі, за якими керування контейнерами краще винести за межі панелі.

Встановлення модуля Docker для ISPmanager

# Встановлення через CLI
ispmanager plugin.install docker

# Або через інтерфейс:
# ISPmanager → Магазин застосунків → Docker

Модуль встановлює сам Docker Engine, якщо його ще немає в системі, і додає до панелі розділ керування контейнерами. Це окремий пакет, а не частина базового встановлення — якщо розділ не з'явився в меню після встановлення, перевірте ліцензію: модуль Docker доступний не в усіх редакціях ISPmanager. Встановлення триває пару хвилин і потребує перезапуску панелі, щоб новий пункт меню підхопився інтерфейсом.

Створення контейнера через ISPmanager

Після встановлення модуля: Інструменти → Docker → Контейнери → Створити

  • Образ: nginx:alpine
  • Порти: 8080:80
  • Томи: /var/www/myapp:/usr/share/nginx/html:ro
  • Перезапуск: always

Параметри створення контейнера

ПолеЩо означає
Образ (image)Ім'я і тег образу з Docker Hub або приватного registry
ПортиПроброс порт_хоста:порт_контейнера
ТомиПроброс каталог_хоста:каталог_контейнера, суфікс :ro — лише читання
ПерезапускПолітика restart: no / always / on-failure / unless-stopped

Керування через CLI

# ISPmanager зберігає конфіги в /etc/ispmgr/docker/
docker ps --format "table {{.Names}}	{{.Status}}	{{.Ports}}"

# Логи контейнера
docker logs -f mycontainer --tail 100

Контейнери, створені через панель, залишаються звичайними Docker-контейнерами: їх видно і в docker ps, і можна перезапускати штатними командами. Панель лише зберігає декларативний опис поряд зі своєю конфігурацією, щоб при перезавантаженні сервера відновити стан. Це зручно для діагностики: якщо контейнер поводиться не так, як очікувалося, не обов'язково повертатися до веб-інтерфейсу — всі стандартні команди Docker працюють напряму з SSH.

Типові помилки під час роботи з контейнерами

ПовідомленняЩо означає
Error: bind: address already in useПорт хоста вже зайнятий іншим процесом або контейнером — наприклад, Apache/Nginx самого сервера слухає 80-й порт
Error response from daemon: pull access deniedОбраз не знайдено в публічному registry, або потрібна авторизація в приватному registry
Cannot connect to the Docker daemonСлужба docker не запущена, або користувач панелі не входить до групи docker
Контейнер у статусі Restarting по колуПроцес усередині контейнера падає одразу після старту — дивіться docker logs, зазвичай помилка в конфігу застосунку

Docker Manager в ISPmanager проти чистого CLI: порівняння

КритерійЧерез ISPmanagerЧерез CLI напряму
Швидкість створення одного контейнераШвидше для простих сценаріївШвидше при повторюваних задачах зі скриптами
Docker Compose (стек з кількох сервісів)Лише в редакції ProЗавжди доступний
Версіювання конфігураціїНемає вбудованогоdocker-compose.yml можна зберігати в git
Доступ для клієнта без SSHТак — через веб-інтерфейсНі, потрібен SSH-доступ

Коли керування через ISPmanager не підходить

  • Потрібен повноцінний оркестратор з масштабуванням і health-check — це завдання Docker Swarm або Kubernetes, а не панелі хостингу
  • Стек складається з 5+ пов'язаних сервісів з мережами та залежностями запуску — керувати цим через окремі картки контейнерів в інтерфейсі незручно, потрібен docker-compose або окремий CI/CD
  • Потрібен автоматичний CI/CD з перезбиранням образу при кожному коміті — панель не замінює пайплайн збирання
  • Контейнери критичні для аптайму і потрібен моніторинг з алертами — використовуйте окремі інструменти (Prometheus, Grafana), Docker Manager в ISPmanager цього не дає
  • Кілька серверів мають працювати як один кластер зі спільним станом — панель керує контейнерами лише на тому сервері, де встановлена, без кластеризації між вузлами

Перевірка результату

Після створення контейнера переконайтеся, що він не просто в статусі Up, а дійсно відповідає на пробросі порту.

# Статус контейнера
docker ps --filter "name=mycontainer"

# Перевірка, що порт справді відповідає
curl -I http://127.0.0.1:8080/

Якщо curl зависає або повертає Connection refused при статусі Up — перевірте, що застосунок усередині контейнера слухає 0.0.0.0, а не 127.0.0.1: у другому випадку проброс порту з хоста не дістанеться процесу. Додатково перевірте стан томів: файли, змінені всередині контейнера, мають з'являтися і на хості. Суміжна тема — запуск Node.js та Python-застосунків в ISPmanager без контейнерів.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці