Repolode
Tecnativa

Tecnativa/docker-socket-proxy

Защищённый HAProxy-прокси для Docker socket, который позволяет разрешать или блокировать отдельные разделы Docker API с помощью переменных окружения.

Звёзды
2,850
Форки
211
Открытые issues
57
Последний коммит
2 месяца назад

Что это?

Docker Socket Proxy работает между сервисом и Docker socket и фильтрует запросы к Docker API. Подключение исходного сокета к контейнеру фактически даёт ему root-доступ к хосту, хотя некоторым сервисам сокет нужен, чтобы реагировать на события или управлять контейнерами. Прокси позволяет открыть сервису только те части API, которые ему действительно необходимы.

Прокси собран на основе образа HAProxy с Alpine и небольшого файла конфигурации. Доступ к каждому разделу API управляется отдельной переменной окружения: значение 1 разрешает доступ, а 0 — запрещает. Запросы к закрытым разделам получают ответ HTTP 403. Доступ к Events, ping и version разрешён по умолчанию, а критически важные с точки зрения безопасности разделы, такие как AUTH и SECRETS, и операции записи через POST по умолчанию запрещены.

В образе нет TLS; он предназначен для работы в приватной сети Docker, а не для публичного доступа. Путь к сокету можно настроить через SOCKET_PATH, что пригодится, например, в системах на базе balenaOS; также поддерживается настройка LOG_LEVEL. Поддерживаются несколько версий Docker API, а образы публикуются в Docker Hub и GitHub Container Registry.

Ключевые возможности

  • 01Позволяет разрешать или запрещать отдельные разделы Docker API с помощью соответствующих переменных окружения.
  • 02Возвращает HTTP 403 для заблокированных запросов.
  • 03Позволяет ограничить доступ только чтением, отключив POST.
  • 04Поддерживает пользовательский путь к сокету через SOCKET_PATH.
  • 05Собран на базе Alpine и HAProxy с небольшим файлом конфигурации.
  • 06Поддерживает несколько версий Docker API — от 1.27 до 1.51.

Сценарии использования

  • Предоставление контейнеру с мониторингом или reverse proxy доступа только для чтения к событиям контейнеров.
  • Ограничение CI-инструмента или средства автоматизации, чтобы оно не могло выполнять привилегированные операции на хосте.
  • Предоставление только тех разделов Docker API, которые нужны инструменту обнаружения сервисов наподобие Traefik.

Быстрый старт

  1. 1

    Запустите контейнер proxy с доступом к Docker socket

    docker container run -d --privileged --name dockerproxy -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 tecnativa/docker-socket-proxy
  2. 2

    Настройте локальный клиент Docker на использование proxy

    export DOCKER_HOST=tcp://localhost:2375
  3. 3

    Проверьте подключение командой docker version

    docker version

Что важно знать

  • Согласно README, для подключения к Docker socket контейнер необходимо запускать с флагом --privileged.
  • Образ не поддерживает TLS, поэтому трафик передаётся по обычному HTTP и должен оставаться в сети с ограниченным доступом.
  • В критически важных для безопасности областях доступ к каждому разделу Docker API по умолчанию отключён — его необходимо разрешать явно.

В подборках

Темы

Частые вопросы

Что такое docker-socket-proxy?
Защищённый HAProxy-прокси для Docker socket, который позволяет разрешать или блокировать отдельные разделы Docker API с помощью переменных окружения. Docker Socket Proxy работает между сервисом и Docker socket и фильтрует запросы к Docker API. Подключение исходного сокета к контейнеру фактически даёт ему root-доступ к хосту, хотя некоторым сервисам сокет нужен, чтобы реагировать на события или управлять контейнерами. Прокси позволяет открыть сервису только те части API, которые ему действительно необходимы.
docker-socket-proxy можно использовать бесплатно? Какая у него лицензия?
docker-socket-proxy распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
docker-socket-proxy всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в docker-socket-proxy — 31 авг. 2026 г..
Для чего можно использовать docker-socket-proxy?
Предоставление контейнеру с мониторингом или reverse proxy доступа только для чтения к событиям контейнеров. Ограничение CI-инструмента или средства автоматизации, чтобы оно не могло выполнять привилегированные операции на хосте. Предоставление только тех разделов Docker API, которые нужны инструменту обнаружения сервисов наподобие Traefik.
Как установить docker-socket-proxy?
Запустите контейнер proxy с доступом к Docker socket: docker container run -d --privileged --name dockerproxy -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 tecnativa/docker-socket-proxy Настройте локальный клиент Docker на использование proxy: export DOCKER_HOST=tcp://localhost:2375 Проверьте подключение командой docker version: docker version
Где скачать docker-socket-proxy?
Исходный код и инструкции по установке — на GitHub: https://github.com/Tecnativa/docker-socket-proxy

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты