docker 容器使用 rabbitmq 的时候,加了bash 参数会无法访问

问题概括

我想知道为什么加了 bash 参数无法正确访问了?

问题描述

花了一个图,首先我用一台 AMD 5700G 的电脑(ip地址:192.168.31.245) 去访问 rabbitmq。
rabbitmq 运行在一台树莓派(ip地址:192.168.31.203)上,不过不是原生运行(apt),而是使用了 docker 。

根据 rabbitmq 官方上的 docker 安装命令:

命令如下:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management

可以把 rabbitmq 跑起来了,并且在 AMD 5700G 的电脑的浏览器中输入 http://192.168.31.203:15672 可以正确看到那个 rabbitmq 的界面

但是因为我是除了 docker 初学者的阶段,所以我们删除了 docker run 中的 --rm 参数选项

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management

改为

docker run -it --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management

跑起来照样没有问题

为了更进一步研究该镜像中有什么内容,我选择加一个 bash 参数选项

sudo docker run -it --name rabbitmq_on_bash -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management bash

所以,现在有两个容器:
容器一:不带 bash 参数,可以正确访问 http://192.168.31.203:15672

docker run -it --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management

容器二:带 bash 参数,无法访问 http://192.168.31.203:15672

sudo docker run -it --name rabbitmq_on_bash -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management bash

我想知道为什么加了 bash 参数无法正确访问了?

rabbitmq-docker.png

image.png

TIPS:没有同时运行两个容器,都想先关闭某一个在运行另一个的
阅读 3.5k
2 个回答

首先,我想你不会同时启动这两个容器,共用一端口不可能两个都同时被访问到。
其次,rabbitmq启动也需要指令。通常应是通过Docker 的CMD 或 ENTRYPOINT 指定。如果命令行有参数,通常会把CMD替换成命令行参数。

即:

  • CMD: 启动容器后,提供默认命令及参数 (不一定会执行,只是默认) 会被docker run 后面参数替换
  • ENTRYPOINT: 启动容器时执行(一定会执行)

因此要看你的容器镜像打包的Dockerfile是如何写的。

我怀疑你进入容器之后阻塞住了管理面板。
》---
刚才在群里说来着,你可以直接换种方式呀
一样的效果。
后台启动,然后exec进去即可

$ docker run -it -d --name rabitmq_bash -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management

$ docker exec -it rabitmq_bash bash
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题