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

我试图从一个Docker容器连接到一个在端口-p 7888上运行另一个链接的Docker容器的nREPL。尽pipe暴露了端口-p 7888 ,链接容器和-link <first_container_name>:repl和使用Docker-注入环境主机和端口variables,我得到“连接被拒绝”。 错误。

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

 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。

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

 lein repl :headless :host 0.0.0.0 :port 7888 

您可以包括端口号如下:

 lein repl :headless :port 1234 

如果你在Mac上运行,你可能在boot2docker后面,所以这篇文章帮了我很大的忙。 这是我如何连接到容器

 lein repl :connect `boot2docker ip`:7888 

并再次感谢

使用docker和boot2docker时,我可以访问哪些IP?