Подключение к безголовому nREPL, работающему в контейнере Docker из другого контейнера

Я пытаюсь подключиться к nREPL из контейнера Docker, в котором запущен другой связанный контейнер Docker на порт 7888. Несмотря на то, что он раскрывает порт с -p 7888, связывая контейнер с -link <first_container_name>:repl и используя Docker-injected переменные хоста и порта среды, я получаю "Соединение отказано". ошибка.

Вот как я запускаю первый контейнер:

docker run -i -t -p 7888 clojure-image lein repl :headless :port 7888
~$ nREPL server started on port 55555 on host 127.0.0.1

И второй контейнер:

docker run -i -t -link <first_container_name>:repl clojure-image /bin/bash
[email protected]~$ lein repl :connect 172.0.2.1:7888

Почему мне отказывают в моей связи? Я могу подключать другие сервисы, такие как AMQP между контейнерами Docker.

Ответ 1

Вы должны включить :host 0.0.0.0 в команду lein repl, чтобы разрешить подключения по имени/адресу хоста, кроме 127.0.0.1:

lein repl :headless :host 0.0.0.0 :port 7888

Ответ 2

Вы можете указать номер порта следующим образом:

lein repl :headless :port 1234