从dockerfile构建的docker容器运行时无法连接到Rabbit MQ实例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从dockerfile构建的docker容器运行时无法连接到Rabbit MQ实例相关的知识,希望对你有一定的参考价值。
我们正试图将一个兔子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而不是其他参数。
这确实创建了一个我们能够进入并验证它正在运行的兔子mq实例,但是当我们尝试连接它时,我们收到一个错误:“ExtendedSocketException:尝试以禁止的方式访问套接字它的访问权限“(我们使用兔子的默认值为5672)。
我不确定我们在命令行中做了什么和在Dockerfile中做了什么之间的区别。
看起来你需要暴露很多其他端口。
我能够使用rabbitmq:latest
生成rabbitmq:3
(this看起来相同)的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"]
Dockerfile用于构建自己的映像,而不是运行容器。问题是 - 为什么你需要建立自己的rabbitmq图像?如果你不这样做 - 那么只需使用官方的rabbitmq图像(就像你最初那样)。我确定它已经内置了所有必需的EXPOSE指令还注意命令行参数“-p 5672:5672 -d --hostname my-rabbit --name some-rabbit rabbitmq:3”被传递给docker守护进程,不是兔子的过程。如果您想确保转发所有必要的端口 - 只需使用-P运行它。
以上是关于从dockerfile构建的docker容器运行时无法连接到Rabbit MQ实例的主要内容,如果未能解决你的问题,请参考以下文章