Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';无法从Docker容器内部访问ActiveMQ_Docker_Activemq_Dockerfile - Fatal编程技术网

Can';无法从Docker容器内部访问ActiveMQ

Can';无法从Docker容器内部访问ActiveMQ,docker,activemq,dockerfile,Docker,Activemq,Dockerfile,我正试图从也在我的机器上运行的docker容器中访问本地机器上的ActiveMQ实例。AMQ正在收听0.0.0.0:61616。我试图将容器中运行的程序配置为使用docker0和enp6s0的ip地址,但两者都无法工作 但是,如果我使用--net=host选项,无论我使用哪个ip地址,它都会突然起作用。问题是我不能在生产中使用该选项,因为启动容器的代码不支持该选项。因此,如果无法更改Dockerfile中的默认网络,我必须以不同的方式修复此问题 编辑:我的Dockerfile FROM java

我正试图从也在我的机器上运行的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'
和run命令:
docker run-it jcs:latest
。使用此命令时,它不起作用。只有当我添加
--net=host

--net=host
时,它才会起作用,因为它告诉Docker将容器放在与主机相同的网络堆栈中

要连接到计算机上运行的服务,您需要docker0网络上主机的ip。因此,ip地址在主机上显示docker0,然后您应该能够使用该ip和61616从容器内连接到主机。

--net=host
起作用,因为它告诉Docker将容器放在与主机相同的网络堆栈中


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

启动容器时是否发布所有暴露的端口?是否需要?我想我只需要在本地机器上发布activemqPlease发布Dockerfile/
docker run…
commandsee edit for Dockerfile and Commands启动容器时是否发布所有暴露的端口?我需要吗?我想我只需要在我的本地机器上发布activemq的端口,请发布您的Dockerfile/
docker运行…
command请参见编辑Dockerfile和command这不起作用。请注意,ActiveMQ未在docker中运行。如果我没有弄错,这会打开docker内部的端口
61616
。奇怪的是,我可以使用
nc172.17.0.161616
(这是
docker0
ip)从容器内部访问AMQ。这是正确的,经过编辑的答案(误读的问题,还没有咖啡!)。还有,为什么不在容器中运行AMQ呢!将所有东西都容器化!:)这不起作用。请注意,ActiveMQ未在docker中运行。如果我没有弄错,这会打开docker内部的端口
61616
。奇怪的是,我可以使用
nc172.17.0.161616
(这是
docker0
ip)从容器内部访问AMQ。这是正确的、经过编辑的答案(误读的问题,还没有咖啡!)。还有,为什么不在容器中运行AMQ呢!将所有东西都容器化!:)