使用docker安装rabbitmq(mqtt)

本文介绍了如何使用docker安装并配置rabbitmq,重点在于启用mqtt插件和设置端口映射,以便支持websocket over mqtt。通过docker运行rabbitmq-mqtt镜像,启用必要的插件,并进行端口映射,最后提供了测试websocket连接的说明。

Rabbitmq是一个开源的amqp的实现,但是也支持mqtt协议,本文旨在使用docker搭建rabbitmq服务器,使用mqtt协议。

搜索rabbitmq的镜像

docker search rabbitmq

这里写图片描述

其中第一个镜像rabbitmq是官方镜像,可以直接使用,但是这个默认是没有启动其他插件的。
也可以直接使用rabbitmq:management镜像,这个是启用了网页管理端的;
也可以直接使用rabbitmq-mqtt,这个是启用了mqtt插件的。
这里直接使用rabbitmq-mqtt。

docker pull cyrilix/rabbitmq-mqtt

启动rabbitmq容器

docker run -d cyrilix/rabbitmq-mqtt

我们可以通过以下命令查看rabbitmq中启动了什么插件

docker exec <容器ID> rabbitmq-plugins list

可以看到我们启用了rabbitmq_management和rabbitmq_mqtt,如果我们需要浏览器通过websocket连接到rabbitmq,我们还需要启动rabbitmq_web_mqtt插件

docker exec <容器ID> rabbitmq-plugins enable rabbitmq_web_mqtt

端口映射

rabbitmq管理控制台的默认端口是15672,mqtt默认端口是1883,websocket默认端口是15675
所以启动容器的时候需要做端口映射,否则无法通过宿主机器访问

docker run -p 1883:1883 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 8883:8883 -p 15672:15672 -p 25672:25672 -p 15675:15675  -d cyrilix/rabbitmq-mqtt 

测试websocket over mqtt

可以使用paho提供的demo:http://www.eclipse.org/paho/clients/js/utility/
其中端口号是15675,path是/ws,账号密码是guest/guest

关于如何启动rabbitmq的mqtt插件

官方文档:
mqtt http://www.rabbitmq.com/mqtt.html
websocket over mqtt http://www.rabbitmq.com/web-mqtt.html

<think>我们正在处理用户查询:如何在离线环境下使用Docker安装RabbitMQ。根据用户要求,我们需要在离线环境中完成安装,因此不能依赖在线下载。通常,Docker离线安装需要预先下载镜像并传输到目标机器。参考引用内容:引用[1]提到:在Dockerfile中启用RabbitMQ插件(使用`rabbitmq-pluginsenable--offline`),这表明我们可以使用离线模式启用插件。引用[2]提到:用户遇到了版本冲突问题,建议使用docker安装,并注意版本对应关系。引用[3]提供了一些安装步骤,但主要是针对CentOS的rpm安装,不过其中提到了配置文件的处理,我们可以参考类似步骤在Docker中处理配置文件。步骤计划:1.在联网环境中下载RabbitMQDocker镜像,并导出为文件。2.将导出的镜像文件传输到离线环境。3.在离线环境中导入Docker镜像。4.创建自定义的Dockerfile(如果需要启用特定插件)或者直接运行容器,但注意在离线环境中启用插件需要使用`--offline`选项。5.准备配置文件(如果需要)并挂载到容器中。详细步骤:第一步:在联网机器上下载镜像并导出我们可以使用官方的RabbitMQ镜像,推荐使用带management标签的镜像,这样包含管理界面。例如:`dockerpullrabbitmq:3.9-management`(这里以3.9-management为例,具体版本用户可自选)导出镜像:```bashdockersave-orabbitmq.tarrabbitmq:3.9-management```将rabbitmq.tar文件复制到离线机器。第二步:在离线机器上导入镜像```bashdockerload-irabbitmq.tar```第三步:运行RabbitMQ容器如果不需要额外启用插件,可以直接运行:```bashdockerrun-d--namerabbitmq-p5672:5672-p15672:15672rabbitmq:3.9-management```但是,如果用户需要启用额外的插件(如MQTT、STOMP等),则需要在离线环境中启用这些插件。由于在容器内部运行`rabbitmq-pluginsenable`通常需要下载,但离线环境无法下载,因此我们需要在构建镜像时就启用插件(使用离线模式)。因此,我们可以创建一个Dockerfile来构建自定义镜像,在Dockerfile中使用`rabbitmq-pluginsenable--offline`命令。注意,这个命令必须在镜像中已经包含这些插件的情况下才能成功(官方提供的management镜像已经包含了很多插件,我们可以直接启用)。例如,我们创建一个Dockerfile,内容如下:```DockerfileFROMrabbitmq:3.9-managementRUNrabbitmq-pluginsenable--offlinerabbitmq_mqttrabbitmq_stomp```但是,在离线环境中如何构建这个镜像呢?我们需要在联网机器上构建好并导出。因此,调整步骤:在联网机器上:1.创建Dockerfile文件,内容如上。2.构建镜像:`dockerbuild-tmy-offline-rabbitmq.`3.导出镜像:`dockersave-omy-offline-rabbitmq.tarmy-offline-rabbitmq`将导出的文件复制到离线机器,然后导入:```bashdockerload-imy-offline-rabbitmq.tar```运行容器:```bashdockerrun-d--namerabbitmq-p5672:5672-p15672:15672my-offline-rabbitmq```如果需要自定义配置文件,可以在运行容器时挂载配置文件。例如,在主机上准备好配置文件`rabbitmq.conf`,然后运行:```bashdockerrun-d--namerabbitmq-p5672:5672-p15672:15672-v/path/to/rabbitmq.conf:/etc/rabbitmq/rabbitmq.confmy-offline-rabbitmq```注意:RabbitMQ的配置文件路径在容器内是`/etc/rabbitmq/rabbitmq.conf`(或者`.config`文件,取决于格式)。引用[3]中提到过配置文件的位置。关于配置文件:在引用[3]中提到了一个配置文件示例,位于`/usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example`,但在Docker镜像中,我们可以通过环境变量或挂载配置文件来配置。另外,如果用户需要其他插件,需要确保这些插件在基础镜像中已经存在(官方镜像的插件列表可以在DockerHub上查看)。如果基础镜像中没有,则需要自行下载插件并复制到镜像中(这需要额外步骤,在离线环境下更复杂,因此建议使用官方镜像中已有的插件)。总结步骤:1.在联网机器上:编写Dockerfile,构建包含所需插件(通过离线启用)的镜像,导出为tar文件。2.将tar文件传输到离线机器。3.在离线机器上导入镜像,运行容器,并可选挂载配置文件。注意:用户的问题是关于离线安装,因此我们假设用户已经将所需的文件(镜像tar包)转移到了离线环境。根据以上分析,我们给出回答。</think>### 离线环境下使用 Docker 安装 RabbitMQ 指南 在离线环境中安装 RabbitMQ 需通过 Docker 镜像的预下载和转移实现,以下是具体步骤: #### 1. **联网环境准备镜像** ```bash # 下载官方镜像(带管理界面) docker pull rabbitmq:3.9-management # 导出镜像为离线文件 docker save -o rabbitmq-offline.tar rabbitmq:3.9-management ``` 将生成的 `rabbitmq-offline.tar` 文件通过U盘或内网传输到离线服务器。 #### 2. **离线服务器加载镜像** ```bash # 加载离线镜像 docker load -i rabbitmq-offline.tar # 验证镜像 docker images | grep rabbitmq ``` #### 3. **启用插件(离线模式)** 创建 `Dockerfile` 启用必要插件(如 MQTT/STOMP): ```Dockerfile FROM rabbitmq:3.9-management RUN rabbitmq-plugins enable --offline \ rabbitmq_mqtt \ rabbitmq_stomp \ rabbitmq_management ``` > **注意**:`--offline` 参数是关键,避免运行时联网下载插件[^1]。 #### 4. **构建自定义镜像** ```bash docker build -t offline-rabbitmq:1.0 . ``` #### 5. **启动容器** ```bash docker run -d \ --name rabbitmq-offline \ -p 5672:5672 \ # AMQP 端口 -p 15672:15672 \ # 管理界面端口 offline-rabbitmq:1.0 ``` #### 6. **验证安装** ```bash # 检查容器状态 docker ps -f name=rabbitmq-offline # 查看已启用插件 docker exec rabbitmq-offline rabbitmq-plugins list ``` ### 关键配置说明 - **配置文件挂载**:如需自定义配置,在运行容器时挂载配置文件: ```bash -v /host/path/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf ``` 配置文件模板位置参考容器内路径:`/usr/share/doc/rabbitmq-server/rabbitmq.config.example`[^3]。 - **版本兼容性**:RabbitMQ 与 Erlang 版本需严格匹配,离线安装时建议使用官方验证的组合(如 rabbitmq:3.9-management 已包含兼容的 Erlang)[^2]。 ### 常见问题解决 - **插件启用失败**:确保基础镜像包含所需插件(management 镜像已预装常用插件)。 - **启动报错**:检查 `rabbitmq.config` 语法,JSON 格式需使用 `.conf` 扩展名[^3]。 - **端口冲突**:修改 `-p` 参数映射端口(如 `-p 25672:15672`)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值