我试图从我的机器上运行的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
答案 0 :(得分:0)
--net=host
有效,因为它告诉Docker将您的容器放在与主机相同的网络堆栈中。
要连接到计算机上运行的服务,您需要在docker0网络上使用主机的IP。所以在您的主机上ip addr show docker0
,您应该能够使用该IP和61616从容器内连接到主机。