TunnelHunt

Docker и TunnelHunt: Как дать временный доступ к контейнеру без боли и страданий

Опубликовано: 5 сентября 2025 г.

Узнайте, как с помощью одной SSH-команды безопасно предоставить временный доступ к сервису, запущенному в Docker-контейнере, будь то база данных или локальное API.

Docker и TunnelHunt: Как дать временный доступ к контейнеру без боли и страданий

Разработка в Docker — это удобно, быстро и изолированно. Но рано или поздно возникает задача: как показать сервис, запущенный в контейнере, коллеге или внешнему приложению? Например, дать бэкенд-разработчику временный доступ к базе данных, запущенной у вас на машине, или протестировать вебхук, который должен достучаться до вашего локального API в контейнере.

Конечно, можно пробрасывать порты на роутере, настраивать VPN или разворачивать всё на общем staging-сервере. Но это долго, сложно и часто небезопасно.

Сегодня мы покажем, как с помощью одной команды и TunnelHunt предоставить временный и безопасный доступ к любому сервису внутри Docker-контейнера.

Проблема: localhost в мире Docker

Когда вы запускаете контейнер и пробрасываете порт командой docker run -p 5432:5432 postgres, порт 5432 становится доступен на вашем localhost. Это отлично работает для локальной разработки.

Но если вы создадите туннель для localhost:5432, он не всегда сработает так, как ожидается, особенно в сложных сетевых конфигурациях Docker. Более надежный способ — создать туннель напрямую к внутреннему IP-адресу контейнера.

Давайте разберем на конкретном примере.

Сценарий: Даем коллеге доступ к базе данных PostgreSQL

Представим, что вы frontend-разработчик и подняли у себя в Docker контейнер с PostgreSQL, чтобы наполнить его тестовыми данными. Бэкенд-разработчику из вашей команды нужно подключиться к этой базе, чтобы проверить запросы.

Шаг 1: Запускаем контейнер PostgreSQL

Если у вас еще нет запущенного контейнера, выполните команду:

docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

Эта команда скачает образ PostgreSQL (если его нет) и запустит контейнер с именем my-postgres в фоновом режиме.

Шаг 2: Узнаем внутренний IP-адрес контейнера

Каждый контейнер в Docker имеет свой собственный IP-адрес во внутренней сети. Чтобы его узнать, выполните команду docker inspect:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-postgres

В ответ вы получите что-то вроде 172.17.0.2. Это и есть адрес, который нам нужен.

Шаг 3: Создаем туннель с помощью TunnelHunt

Теперь самое интересное. Мы создадим туннель, который будет вести не на localhost, а прямо на внутренний IP-адрес нашего контейнера и порт 5432 (стандартный порт PostgreSQL).

Откройте терминал и выполните:

ssh -R 80:172.17.0.2:5432 -p 2222 nokey@tunnelhunt.ru
  • 172.17.0.2:5432 — это адрес и порт нашего контейнера.
  • 80 — это порт, который будет “слушать” сервер TunnelHunt.

После выполнения команды вы получите публичный адрес, например, https://lorem-ipsum-123.tunnelhunt.ru. Но поскольку мы туннелируем не HTTP-трафик, а TCP-соединение для базы данных, нам нужен хост и порт для подключения.

  • Хост: tunnelhunt.ru
  • Порт: TunnelHunt сообщит вам его в ответном сообщении (например, Port 33123 is open).

Шаг 4: Коллега подключается к базе данных

Теперь ваш коллега может использовать полученные данные для подключения к вашей базе данных через любой SQL-клиент (например, DBeaver или DataGrip):

  • Хост: tunnelhunt.ru
  • Порт: 33123 (порт, который выдал TunnelHunt)
  • База данных: postgres
  • Пользователь: postgres
  • Пароль: mysecretpassword (тот, что мы указали при запуске контейнера)

Готово! Ваш коллега подключен к базе данных в вашем Docker-контейнере, а вам не пришлось ничего настраивать, кроме одной команды в терминале. Как только вы закроете SSH-соединение (нажав Ctrl+C), туннель закроется, и доступ к базе данных прекратится.

Заключение

Комбинация Docker и TunnelHunt — это мощный инструмент для быстрой и безопасной командной работы. Этот подход работает не только для баз данных, но и для любого другого сервиса, запущенного в контейнере:

  • API-сервисы
  • Админки (например, phpMyAdmin)
  • Брокеры сообщений (RabbitMQ, Kafka)
  • Любые другие TCP-сервисы

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

Готовы запустить свой первый туннель?

Начните использовать TunnelHunt бесплатно уже сегодня и откройте доступ к локальному серверу всего одной командой.

Зарегистрироваться бесплатно →

Последние публикации

Локальное тестирование вебхуков CloudPayments через TunnelHunt

Локальное тестирование вебхуков CloudPayments через TunnelHunt

22 июня 2026 г.

Пошаговый гайд по отладке уведомлений о платежах CloudPayments на localhost. Как настроить адреса уведомлений, пробросить туннель и верифицировать подпись HMAC-SHA256 в Python.

Читать далее →
Настройка и отладка вебхуков Robokassa на локальном сервере

Настройка и отладка вебхуков Robokassa на локальном сервере

22 июня 2026 г.

Пошаговая инструкция по приему и верификации платежных уведомлений Robokassa на локальном компьютере с помощью TunnelHunt. Пример MD5-подписи на Python.

Читать далее →
Локальное тестирование вебхуков Т-Банка (Т-Бизнес / Эквайринг) на localhost

Локальное тестирование вебхуков Т-Банка (Т-Бизнес / Эквайринг) на localhost

22 июня 2026 г.

Пошаговый гайд по отладке платежных уведомлений эквайринга Т-Банка локально. Настройка адреса уведомлений, проброс через TunnelHunt и пример проверки подписи Token на Python.

Читать далее →
Локальное тестирование вебхуков ЮKassa (YooKassa) через TunnelHunt

Локальное тестирование вебхуков ЮKassa (YooKassa) через TunnelHunt

22 июня 2026 г.

Пошаговый гайд по настройке уведомлений ЮKassa (YooKassa) на локальном сервере. Как пробросить порт, прописать URL в личном кабинете и проверить цифровую подпись.

Читать далее →