如何在浏览器中使用 docker 容器打开 rabbitmq?

这个问题可能已经问过了,但是到目前为止,我还没有找到任何详细的解释,而且现有的文件似乎是写给某种通灵者的,他们应该知道一切。

根据这个 手动操作,我添加了容器

docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:latest

然后我检查了接收容器 IP 地址

docker inspect some-rabbit

检查港口

docker ps

并尝试用这个公式在浏览器中连接

https://{container-ip}:{port}

没用。

我是不是做错了什么,或者我应该添加一些额外的东西,比如用于 apache 或其他东西的容器?

剪辑

据我所知,在创建了一些-Rabbit 容器之后,现在我需要运行 Dockerfile 来创建映像吗?(这整件事让我很困惑)。我该怎么做?我的意思是,我看到命令 docker build -f /path/to/a/Dockerfile,但是如果我把 Dockerfile 放在第二个路径 D:\Docker\rabbitmq,我应该如何到达那里?(路径似乎没有被认出)

118096 次浏览

You are using the wrong image which doesn't have the rabbitmq_management plugin enabled. Change rabbitmq:latest to rabbitmq:management.

On dockerhub they are using the command:

docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3-management

If you want to go to the UI on localhost:15672 make sure to expose the port by adding -p 15672:15672 to the above command.

The management image is just the rabbitmq latest image with the management plugin enabled. Here is the dockerfile for rabbitmq:management

FROM rabbitmq


RUN rabbitmq-plugins enable --offline rabbitmq_management


EXPOSE 15671 15672

First off, you need the management image (eg. rabbitmq:3-management) to access it through the browser. If your docker is running locally, then you should be able to access it by navigating to http://localhost:{port} or http://127.0.0.1:{port} (15672 by default).

Here is an example of a simple docker-compose.yml:

version: "3"
services:
rabbitmq:
image: "rabbitmq:3-management"
ports:
- "5672:5672"
- "15672:15672"
volumes:
- 'rabbitmq_data:/data'


volumes:
rabbitmq_data:

After starting the container, Rabbitmq is now accessible at http://127.0.0.1:15672. The default username and password should be guest:guest. More details here.

enter image description here

In my case I could access the UI of RabbitMQ for several days but some day it suddenly stop working and I can't access it anymore.

After some investigation the source of this problem was found. It was the main service of docker that somehow stopped.

So if you could access the UI and after some time you couldn't, go to your task manager and search for Docker.Service to see if it is running, as you can see in the below picture.

enter image description here

If you don't see it, you should run it manually. In my case I have it on my desktop it is called "Docker for Windows".

The compose would be like

version: '3'
services:
rabbitmq:
image: rabbitmq:management
ports:
- '5672:5672'
- '15672:15672'
volumes:
- rabbitmq_data

I see some useful answer, but none as mentioned how to access the server (rabbitmq) using container's ip-address. For people looking for this solution...

  • Make sure you have your rabbitmq image running on a container run: docker inspect
  • [container-id] and scroll down to find the container's ip-address.
  • add routing to contain's ip-address see `<

: github-issues

Better to expose all three ports (5672, 5673, 15672).

docker run -d --name some-rabbit -p 5672:5672 -p 5673:5673 -p 15672:15672 rabbitmq:3-management

Then you may browse, http://localhost:15672/ with the credentials "guest" for both the username and the password.

if you launched rabbitmq by using somthing like:

docker run -d --name some-rabbit -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15672:15672 rabbitmq

then you can enable its management plugins while that container runs using the following command:

docker container exec -it some-rabbit rabbitmq-plugins enable rabbitmq_management

and the management GUI is running on http://localhost:15672 For management GUI

username: guest

password: guest

Instead of http://localhost:15672 you would want to use the ip that your docker instance is running on. On windows run:

ipconfig

Use the ip address as highlighted below: enter image description here

Then try http://10.0.75.1:{your-rabbitmq-port}

I use the following command And in that I defined the username and password I also exposed ports 5673 and 15673 You need to enter your username and password

docker run -d --name same-rabbit \
--hostname my-rabbit \
-e RABBITMQ_DEFAULT_USER=USERNAME \
-e RABBITMQ_DEFAULT_PASS=PASSWORD \
-v /home/USER/rabbitmq/:/var/lib/rabbitmq \
-p 5673:5672 \
-p 15673:15672 \
rabbitmq:management

You can also use the following docker compose

version: '3.3'
services:
rabbitmq:
container_name: same-rabbit
environment:
- RABBITMQ_DEFAULT_USER=USERNAME
- RABBITMQ_DEFAULT_PASS=PASSWORD
volumes:
- '/home/USER/rabbitmq/:/var/lib/rabbitmq'
ports:
- '5673:5672'
- '15673:15672'
image: 'rabbitmq:management'

Please try with version 3, also the article below works on me after giving painstaking trials with 3.8

https://blog.devgenius.io/rabbitmq-with-docker-on-windows-in-30-minutes-172e88bb0808

With Java you may use the lib Testcontainers RabbitMQ Module. An example to bootstrap using Scala:

  val rabbitMQContainer = new RabbitMQContainer("rabbitmq:management")
rabbitMQContainer.start()
if (os == "mac os x") Process(s"open ${rabbitMQContainer.getHttpUrl}").!

and then login with guest:guest

Full example: https://github.com/pbernet/akka_streams_tutorial/blob/master/src/main/scala/alpakka/amqp/AmqpEcho.scala

FROM rabbitmq:3.8-management
RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp
WORKDIR /usr/src/app
ENV RABBITMQ_ERLANG_COOKIE: 'secret cookie here'
VOLUME ~/.docker-conf/rabbitmq/data/:/var/lib/rabbitmq/mnesia/
EXPOSE 5672 15672
  1. docker build . -t rabbit-mq
  2. docker run -it -p 5672:5672 -p 15672:15672 rabbit-mq

In the current version (20.10.12), I had to pull the latest management plugin enabled image using:

docker pull rabbitmq:management

Then run with the command (this command does both, pull & run):

docker run -p 15672:15672 -p 5672:5672 --name rabbit-image-name rabbitmq:management

Navigate to: http://localhost:15672/

It worked!

Make sure you stop the other container images before starting this one.