无法从Docker容器内部访问ActiveMQ

时间:2016-05-03 21:24:21

标签: docker activemq dockerfile

我试图从我的机器上运行的docker容器内访问本地计算机上的ActiveMQ实例。 AMQ正在聆听0.0.0.0:61616。我尝试配置在容器中运行的程序,以使用docker0以及enp6s0的IP地址,两者都无法正常工作。

但是,如果我使用--net=host选项,无论我使用哪个IP地址,它都会突然起作用。问题是我无法在生产中使用该选项,因为启动容器的代码不支持此功能。因此,如果无法更改Dockerfile中的默认网络,我必须以不同的方式解决此问题。

编辑:我的Dockerfile

FROM java:8-jre

RUN mkdir -p /JCloudService
COPY ./0.4.6-SNAPSHOT-SHADED/ /JCloudService

RUN apt-get update && apt-get install netcat -y && apt-get install nano

WORKDIR /JCloudService

CMD set -x; /bin/sh -c '/JCloudService/bin/JCloudScaleService'

运行命令:docker run -it jcs:latest。使用此命令它不起作用。仅当我添加--net=host

1 个答案:

答案 0 :(得分:0)

--net=host有效,因为它告诉Docker将您的容器放在与主机相同的网络堆栈中。

要连接到计算机上运行的服务,您需要在docker0网络上使用主机的IP。所以在您的主机上ip addr show docker0,您应该能够使用该IP和61616从容器内连接到主机。