Как открыть порт для эфемерного порта хоста и привязать его к localhost - PullRequest
0 голосов
/ 06 ноября 2019

Docker составьте вопрос (подойдет любая версия)

Мне нужно открыть порт 60000 из контейнера для эфемерного (случайного) порта хоста и привязать его только к localhost.

Синтаксис

ports: 
   - 60000

приводит к получению порта 0.0.0.0:32XXX.

Синтаксис - "127.0.0.1:YYYY:60000" требует от меня установки статического порта хоста (ГГГГ)

Я знаю, что могу связать демон Dockerслушать только на локальном хосте, но у меня это не работает, так как мне нужны другие контейнеры для прослушивания 0.0.0.0

1 Ответ

0 голосов
/ 06 ноября 2019

Если синтаксис, который вы показываете, не работает, то Docker Compose 3.7 не может сделать это (но это, вероятно, довольно простой запрос на добавление GitHub, чтобы добавить его). (Также обратите внимание, что этот синтаксис задокументирован в документации docker run; это просто проблема синтаксического анализа в Compose.)

Лучшим обходным решением, вероятно, будетвыбрать "публичный" порт самостоятельно. Если вы пытаетесь адаптировать рабочий процесс, построенный на docker run -p 127.0.0.1::60000 или даже docker run -P, это будет сложнее.

Фактический исходный код Docker Compose находится в GitHub docker/composeрепозиторий. Это включает в себя схему конфигурации для файла docker-compose.yml и метод ServicePort.parse для обработки содержимого ports:. Похоже, что метод parse для строки не поддерживает отсутствующий опубликованный порт (я не уверен почему), и схема не допускает опцию external_ip: для длинного синтаксиса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...