从dockerfile构建的docker容器运行时无法连接到Rabbit MQ实例

时间:2018-11-21 22:11:58

标签: docker kubernetes rabbitmq

我们正在尝试将Rabbit mq的实例放入我们的Kubernetes环境中。为此,我们必须在构建和发布过程中实现它,其中包括通过Dockerfile创建Docker容器。

在我们的原始测试期间,我们使用以下命令手动创建了docker容器,并且该容器正常工作:

docker pull rabbitmq
docker run -p 5672:5672 -d --hostname my-rabbit --name some-rabbit rabbitmq:3
docker start some-rabbit

要创建docker文件,我们尝试了各种迭代,最新的是:

FROM rabbitmq:3 AS rabbitmq
RUN rabbitmq-server -p 5672:5672 -d --hostname my-rabbit --name some-rabbit 
EXPOSE 5672

我们还仅使用Run rabbitmq-server尝试了此操作,而没有使用其他参数。

这确实创建了一个我们可以通过SSH验证并正在运行的Rabbit MQ实例,但是当我们尝试连接到该实例时,会收到错误消息:“ ExtendedSocketException:试图访问一个MQ实例中的套接字。访问权限所禁止的方式”(我们使用Rabbit的默认值5672)。

我不确定在命令行中完成的操作与在Dockerfile中完成的操作之间可能会有什么区别。

2 个答案:

答案 0 :(得分:1)

看起来您需要公开很多其他端口。

我能够使用thisrabbitmq:latestrabbitmq:3看起来一样)生成Dockerfile命令:

ENV PATH=/usr/lib/rabbitmq/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin    
ENV GOSU_VERSION=1.10    
ENV RABBITMQ_LOGS=-   
ENV RABBITMQ_SASL_LOGS=-   
ENV RABBITMQ_GPG_KEY=0A9AF2115F4687BD29803A206B73A36E6026DFCA 
ENV RABBITMQ_VERSION=3.7.8   
ENV RABBITMQ_GITHUB_TAG=v3.7.8
ENV RABBITMQ_DEBIAN_VERSION=3.7.8-1
ENV LANG=C.UTF-8   
ENV HOME=/var/lib/rabbitmq    
EXPOSE 25672/tcp  
EXPOSE 4369/tcp
EXPOSE 5671/tcp
EXPOSE 5672/tcp
VOLUME /var/lib/rabbitmq
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["rabbitmq-server"]

答案 1 :(得分:0)

Dockerfile用于构建您自己的映像,而不是运行容器。问题是-为什么需要构建自己的Rabbitmq映像?如果您不这样做,则只需使用官方的rabbitmq图像即可(就像您最初那样)。 我确定它已经内置了所有必需的EXPOSE指令 另请注意,命令行参数“ -p 5672:5672 -d --hostname my-rabbit --name some-rabbit rabbitmq:3”被传递给docker守护程序,而不传递给Rabbitmq进程。 如果要确保转发所有必需的端口,请使用-P运行它。