Тариф успешно добавлен в корзину
В корзину
url image

Начало работы с Dockhand после автоматической установки из рецепта

При заказе виртуального сервера с готовым рецептом Dockhand вы получаете VDS, на котором уже установлено необходимое ПО и выполнена базовая настройка. Сервис развернут через Docker Compose, запущен и готов к работе. Также в рецепт входят предварительно настроенные nginx, TLS и файрвол.

В статье расскажем, как войти в Dockhand после установки, проверить его работу и управлять контейнерами. 

По умолчанию устанавливается последняя версия Dockhand. Имя пользователя администратора — admin. Файлы сервиса размещаются в каталоге /opt/dockhand, а пароль администратора сохраняется в файле /root/Dockhand-final.txt. Рецепт работает на Debian/Ubuntu и CentOS/Rocky/Alma. 

Что такое Dockhand

Dockhand — это современная веб-панель для управления Docker-инфраструктурой. Через браузер она позволяет выполнять основные операции с контейнерами:

  • создавать их с расширенными параметрами;
  • запускать, останавливать, перезапускать и удалять;
  • просматривать процессы, переменные окружения, слои, логи, потребление CPU и памяти;
  • открывать встроенный терминал и файловый браузер без отдельного SSH-подключения.

Dockhand поддерживает работу с Docker Compose: можно редактировать Compose-файлы через визуальный редактор, разворачивать приложения из Git-репозиториев, настраивать автоматическую синхронизацию с помощью вебхуков, выполнять загрузку образов, принудительный redeploy и плановые обновления. Это делает Dockhand удобным не только для ручного администрирования контейнеров, но и для GitOps-подхода, когда конфигурация приложений хранится в репозитории.

Отдельное внимание уделено наблюдаемости и безопасности. Dockhand показывает live-метрики CPU, памяти, ввода вывода сети и диска по контейнерам, поддерживает потоковый просмотр логов в реальном времени, ведёт журнал активности контейнеров и может отправлять уведомления по email или с помощью вебхуков. Для защиты доступны OIDC/SSO, MFA/TOTP, LDAP/Active Directory, RBAC и сканирование образов на уязвимости через Grype и Trivy.

Dockhand можно использовать как для одного локального Docker-хоста, так и для нескольких окружений. Поддерживаются подключение через локальный Docker socket, удалённые TCP-подключения с TLS и агент Hawser, который позволяет управлять Docker-хостами за NAT, firewall или с динамическим IP без открытия входящих портов.

Дополнительно Dockhand поддерживает настройку интерфейса: светлую и тёмную темы, изменение размера шрифтов, управление колонками таблиц, изменение размеров плиток Dashboard и сохранение пользовательских предпочтений. 

Вход в Dockhand

После автоматической установки Dockhand можно открыть в браузере по адресу:

https://<IP-адрес-сервера>

Для входа используйте учётные данные администратора, созданные рецептом. Логин пользователя — admin, а пароль сохраняется на сервере в итоговом файле установки: /root/Dockhand-final.txt

При самоподписанном сертификате браузер покажет предупреждение. Примите исключение для IP-адреса сервера.

Обзор панели управления

После успешной авторизации откроется главная страница Dockhand с подключенным локальным окружением Docker.

В боковом меню находятся основные разделы управления, а в центральной части отображается содержимое выбранного раздела.

Кратко разберём основные разделы панели:

  • Dashboard — общий обзор окружений: статус подключения, количество контейнеров, нагрузка CPU и памяти, health-статусы и недавняя активность.
  • Containers — управление контейнерами: запуск, остановка, перезапуск, удаление, просмотр логов, статистики, терминала и файлов.
  • Logs — просмотр логов контейнеров в реальном времени, включая логи остановленных контейнеров.
  • Shell — встроенный терминал для выполнения команд внутри запущенного контейнера.
  • Stacks — управление приложениями Docker Compose: создание, редактирование и запуск stack’ов из YAML-файлов или Git-репозиториев.
  • Images — управление Docker-образами: просмотр, загрузка, удаление, теги, экспорт и проверка уязвимостей.
  • Volumes — управление томами для постоянного хранения данных контейнеров.
  • Networks — управление Docker-сетями, через которые контейнеры взаимодействуют между собой.
  • Templates — готовые шаблоны для быстрого развёртывания контейнеров и stack’ов.
  • Registry — поиск и загрузка образов из подключённых Docker Registry.
  • Activity — журнал событий Docker, который фиксирует запуск, остановку, создание контейнеров и другие действия.
  • Schedules — настройка запланированных задач, например, автообновлений и очистки.
  • Settings — настройки Dockhand, окружений, пользователей, доступа, уведомлений и интеграций.

Смена пароля администратора

После первого входа при необходимости можно сменить пароль администратора на более удобный и безопасный для дальнейшей работы.

Чтобы сменить пароль администратора, в левом меню нажмите на иконку учётной записи admin:

В открывшемся профиле перейдите в раздел Security. В поле Password нажмите Change password.

Укажите текущий пароль в поле Current password, затем введите новый пароль в поля New password и Confirm new password. Рекомендуется использовать надёжный пароль длиной не менее 12 символов. После этого нажмите Change password.

В этом же разделе доступна настройка двухфакторной аутентификации (Two-factor authentication). Она добавляет дополнительный уровень защиты: помимо пароля, при входе потребуется одноразовый код из приложения-аутентификатора. Это снижает риск несанкционированного доступа даже в случае компрометации пароля.

Создание и запуск контейнера

Для примера развернём в Dockhand простой контейнер с nginx. Он быстро запускается, не требует сложной настройки и позволяет сразу проверить публикацию порта в браузере.

Откройте подключённое окружение Local Docker и перейдите в раздел Containers. Нажмите Create для создания нового контейнера.

В поле образа укажите nginx:latest

Нажмите Pull, чтобы скачать образ:

Далее на вкладке Container в поле имени контейнера укажите: MyNginx

Ниже настройте проброс порта:

  • host: 1234
  • container: 80

Это значит, что nginx внутри контейнера будет слушать порт 80, а снаружи будет доступен через порт 1234 на IP-адресе сервера.

При необходимости можно настроить дополнительные параметры:

  • Resources — лимиты CPU и памяти: memory limit, memory reservation, CPU limit, CPU shares, CPU quota и CPU period.
  • Security — пользователь, от имени которого запускается контейнер, привилегированный режим, добавление и удаление Linux capabilities, а также security опции вроде no-new-privileges, seccomp=unconfined и apparmor=unconfined.
  • Healthcheck — встроенная проверка состояния контейнера: команда проверки, интервал запуска, timeout, количество повторов и стартовая задержка.
  • DNS settings — пользовательские DNS-серверы, search-домены и дополнительные DNS опции для контейнера.
  • Devices — проброс устройств хоста внутрь контейнера, например, /dev/sda на хосте в /dev/sda внутри контейнера.
  • GPU — включение доступа контейнера к GPU: выбор runtime, режима доступа к GPU, драйвера и capabilities.
  • Ulimits — настройка soft и hard лимитов для процессов внутри контейнера, например nofile, nproc, core, memlock, stack, cpu, fsize и locks.

После заполнения параметров нажмите Create container. Контейнер появится в списке со статусом running.

Проверить работу nginx можно в браузере: http://<IP-адрес-сервера>:1234

Если открылась стартовая страница nginx, контейнер создан и опубликован корректно.

Управление контейнером

Для управления контейнером откройте раздел Containers. В списке отображаются имя контейнера, образ, состояние, health-статус, время работы, количество перезапусков, нагрузка CPU и памяти, сетевой и дисковый ввод-вывод, IP-адрес и опубликованные порты.

Над списком доступны поиск, фильтр по статусу, создание контейнера, проверка обновлений, очистка неиспользуемых контейнеров через Prune и обновление списка.

Если выбрать один или несколько контейнеров, появятся групповые действия: StopPauseRestart и Remove.

В колонке Actions доступны действия для конкретного контейнера: просмотр логов, открытие консоли, просмотр подробной информации, редактирование, перезапуск, пауза, остановка и удаление.

Развертывание приложений через Stacks / Docker Compose

Одного контейнера достаточно для простых задач, но реальные приложения часто состоят из нескольких сервисов. Например, веб-приложение может включать backend, базу данных, reverse proxy и отдельный сервис кеширования.

Для таких сценариев используется Docker Compose. В Dockhand такие Compose-проекты отображаются в разделе Stacks. Вы добавляете YAML-файл с описанием сервисов, сетей и томов, а Dockhand на его основе создаёт и запускает все контейнеры приложения как один проект.

Такой подход удобен для работы с несколькими контейнерами. Конфигурация хранится в одном файле, все связанные контейнеры создаются вместе, а обновлять и пересоздавать приложение проще, чем управлять каждым контейнером отдельно.

Создание и запуск Stack

Откройте раздел Stacks и нажмите кнопку Create.

В поле укажите имя, например: demo-stack

В редактор вставьте Compose-конфигурацию и нажмите Create & Start:

services:
  nginx:
    image: nginx:latest
    container_name: nginx-demo
    restart: unless-stopped
    ports:
      - "8080:80"

  postgres:
    image: postgres:17
    container_name: postgres-demo
    restart: unless-stopped
    environment:
      POSTGRES_DB: appdb
      POSTGRES_USER: appuser
      POSTGRES_PASSWORD: strongpassword
    ports:
      - "127.0.0.1:5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

В этом примере Dockhand развернёт два контейнера: nginx и PostgreSQL. Nginx будет доступен извне по порту 8080, а PostgreSQL будет опубликован только на локальном интерфейсе сервера 127.0.0.1.

После запуска проекта Dockhand скачает нужные образы, создаст сеть, том postgres_data и запустит контейнеры. Проект появится в разделе Stacks. В нём можно управлять всем приложением целиком: останавливать, запускать, пересоздавать и обновлять.

В разделе Containers также будет видно по колонке Stack, к какому стеку относится каждый контейнер. Это удобно, когда на сервере работает множество приложений.

Подключение удалённых Docker-хостов

Dockhand может управлять как локальным Docker-хостом, так и удалёнными серверами. Для подключения окружений доступны несколько вариантов:

  • Unix socket — подключение к локальному Docker через /var/run/docker.sock. Используется, когда Dockhand запущен на том же сервере, что и Docker.
  • Direct connection — прямое подключение к удалённому Docker API по HTTP/HTTPS. Подходит для серверов в защищённой сети или VPN. 
  • Hawser agent (Standard) — агент запускается на удалённом сервере и ожидает подключение от Dockhand. Подходит для LAN/VPN и серверов со статическим IP.
  • Hawser agent (Edge) — агент сам устанавливает исходящее соединение с Dockhand. Это удобный вариант для серверов за NAT, файрвол или с динамическим IP: на удалённом Docker-хосте не нужно открывать входящие порты.

В качестве примера настройки удалённого Docker-хоста рассмотрим подключение через Hawser agent (Edge). Как правило, этот вариант проще для VDS: агент сам устанавливает исходящее соединение с Dockhand, поэтому не нужно настраивать правила файрвола на Docker-хосте для входящих подключений с IP-адреса Dockhand.

Откройте Dockhand и перейдите в раздел Settings, вкладка Environments.  

Нажмите Add environment, задайте имя нового окружения, например, docker-dev01, и выберите тип подключения Hawser agent (edge). Dockhand сгенерирует токен и покажет строку запуска агента в блоке Run on your host. Скопируйте токен или всю строку целиком, затем нажмите Add в этом же окне.

После этого подключитесь к удалённому серверу, на котором установлен Docker, и создайте каталог для агента:

mkdir -p /opt/dockhand-agent
cd /opt/dockhand-agent

Создайте файл .env

nano .env

Добавьте в него параметры, полученные в Dockhand: 

DOCKHAND_SERVER_URL=wss://your-dockhand.example.com/api/hawser/connect
AGENT_TOKEN=<токен-из-dockhand>
AGENT_NAME=docker-dev01

Здесь:

  • DOCKHAND_SERVER_URL — адрес, который Dockhand показал в блоке Run on your host;
  • TOKEN — токен, сгенерированный через Generate connection token;
  • AGENT_NAME — имя environment, которые ранее указывали в Dockhand.

Так как в .env хранится токен подключения, ограничьте доступ к файлу:

chmod 600 .env

Теперь создайте файл docker-compose.yml: 

nano docker-compose.yml

Добавьте конфигурацию агента: 

services:
  dockhand-agent:
    container_name: dockhand-agent
    image: ghcr.io/finsys/hawser:latest
    restart: unless-stopped
    environment:
      DOCKHAND_SERVER_URL: ${DOCKHAND_SERVER_URL}
      TOKEN: ${TOKEN}
      AGENT_NAME: ${AGENT_NAME}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - dockhand_agent_data:/data

volumes:
  dockhand_agent_data:
    name: dockhand_agent_data

Агенту нужен доступ к Docker socket, поэтому в compose-файле подключается: /var/run/docker.sock:/var/run/docker.sock

Через этот сокет агент сможет получать информацию о контейнерах, образах, сетях и томах, а также выполнять действия, которые запускаются из Dockhand.

Запустите агент:

docker compose up -d

Проверьте, что контейнер запущен:

docker ps

Посмотреть логи агента можно командой:

docker logs -f dockhand-agent

Если параметры указаны правильно, агент установит исходящее соединение с Dockhand Server. Через несколько минут окружение в разделе Settings > Environments должно перейти в состояние Connected.

После первой синхронизации в разделе Dashboard появится информация об удалённом Docker-хосте: контейнеры, образы, сети, тома и текущее состояние ресурсов сервера.

Управление Dockhand Server

Параметры запуска Dockhand Server задаются в Docker Compose-файле. После установки из рецепта этот файл находится в каталоге сервиса: /opt/dockhand/docker-compose.yml

В этом же файле задаются образ Dockhand, версия, политика перезапуска, подключённые тома, сетевые порты и переменные окружения.

Пример структуры Compose-файла:

services:
  dockhand:
    container_name: dockhand
    image: fnsys/dockhand:v1.0.39
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - dockhand_data:/app/data
    ports:
      - "127.0.0.1:3000:3000"
volumes:
  dockhand_data:
    name: dockhand_data
networks:
  default:
    name: dockhand_network

Dockhand работает за Nginx, внешний доступ к панели выполняется через HTTPS: https://<IP-адрес-сервера> а внутренний порт приложения доступен только локально на сервере.

Для обновления Dockhand Server укажите в файле docker-compose.yml нужную версию образа. После этого перейдите в каталог сервиса и выполните команды: 

cd /opt/dockhand
docker compose pull
docker compose up -d

Команда docker compose pull загрузит актуальный образ, указанный в конфигурации, а docker compose up -d пересоздаст контейнер и запустит его в фоне.

Проверить состояние контейнера можно командой:

docker compose ps

Посмотреть логи:

docker compose logs

или:

docker logs dockhand

Firewall

При установке Dockhand рецепт автоматически настраивает файрвол, на сервере уже установлен и запущен один из поддерживаемых сервисов: 

  • ufw — чаще используется в Ubuntu/Debian;
  • firewalld — чаще используется в AlmaLinux, Rocky Linux и CentOS.

В правилах файрвола разрешён доступ:

  • 22/tcp — SSH;
  • 80/tcp — HTTP (редирект на HTTPS);
  • 443/tcp — HTTPS-доступ к веб-интерфейсу Dockhand.

Проверить правила ufw можно командой:

ufw status

Для firewalld используйте:

firewall-cmd --list-all

Также можно проверить, что сервер слушает нужные порты: 

ss -tulpn | grep -E ':22|:80|:443'

При публикации портов контейнеров Docker самостоятельно добавляет правила файрвола, поэтому опубликованные порты становятся доступны извне без отдельной настройки UFW или firewalld. О настройке ограничений доступа к портам контейнеров читайте в официальной документации Docker.

После базовой настройки Dockhand можно использовать как удобную веб-панель для локального Docker-сервера. Если подключить удалённые окружения, внешнюю аутентификацию и разграничение прав, Dockhand становится центральной точкой управления Docker-инфраструктурой для команды.

Если нужны другие варианты работы с Docker, используйте связанные рецепты и инструкции:

  • Docker — базовая установка Docker Engine без веб-панели, если вы планируете работать с контейнерами через командную строку.

  • Portainer — альтернативная веб-панель для управления Docker-контейнерами, образами, томами и Compose-проектами.

Этот материал был полезен?

Скидка новым клиентам
Закажите сервер сегодня и получите скидку на первый месяц аренды!
Наш сайт использует cookies Вы можете отключить их в настройках браузера, но это может ограничить функционал. Оставаясь на сайте, вы соглашаетесь с использованием cookies.