从另一个容器连接到Docker容器中运行的无头nREPL

时间:2014-03-15 10:53:34

标签: clojure docker nrepl

我尝试从端口7888上运行另一个链接的Docker容器的Docker容器连接到nREPL。尽管使用-p 7888公开了端口,但将容器与-link <first_container_name>:repl链接起来并使用Docker注入的环境主机和端口变量,我得到&#34;连接被拒绝。&#34; 错误。

以下是我如何运行第一个容器:

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
username@hostname~$ lein repl :connect 172.0.2.1:7888

为什么我的连接遭到拒绝?我能够在Docker容器之间连接其他服务,如AMQP。

3 个答案:

答案 0 :(得分:18)

您必须在:host 0.0.0.0命令中包含lein repl以允许连接127.0.0.1以外的主机名/地址:

lein repl :headless :host 0.0.0.0 :port 7888

答案 1 :(得分:4)

您可以按如下方式输入端口号:

lein repl :headless :port 1234

答案 2 :(得分:1)

如果你在Mac上运行,你可能已经落后于boot2docker,所以这篇文章有很多帮助。这是我连接到容器的方式:

lein repl :connect $(boot2docker ip):7888

感谢:What IP do I access when using docker and boot2docker?