docker安装Rabbitmq并配置挂载文件和启动MQTT

Posted 佛系写BUG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker安装Rabbitmq并配置挂载文件和启动MQTT相关的知识,希望对你有一定的参考价值。

安装Rabbitmq

#下载镜像,指定版本,该版本包含了web控制页面 :版本
docker pull rabbitmq:management

#创建本地映射目录
mkdir -p /home/docker/rabbitmq

#修改文件权限为可编辑 表示所有文件
chmod -R 777 /home/docker/

#启动

#方式一:默认guest 用户,密码也是 guest
docker run -d --hostname rabbit --name rabbit -v /ihcc/rabbitmq:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -p 1883:1883 rabbitmq:management

#方式二:设置用户名和密码
docker run -d --hostname rabbit --name rabbit -v /ihcc/rabbitmq:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_VHOST=my-vhost -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 1883:1883 rabbitmq:management

#修改后:设置用户名和密码admin和自定义外挂载文件路径并开启容器自启
docker run -d --hostname rabbitmq --name rabbit -v /home/docker/rabbitmq:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 1883:1883 --restart=always rabbitmq:management

#访问ui页面
http://localhost:15672/

Docker启动容器自启

docker update rabbit --restart=always

#参数:
-m 300m 分配300M内存
-e TZ=Asia/Shanghai 设置时区
–hostname:设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts,作为容器主机IP的别名,并且将显示在容器的bash中
-e 参数RABBITMQ_DEFAULT_USER 用户名RABBITMQ_DEFAULT_PASS 密码
–name=“名字” 指定容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 主机端口:容器端口
-v 挂载文件或目录 :前表示主机部分,:后表示容器部分。

注意映射容器端口

15672 是rabbitmq management管理界面默认访问端口
5672 是amqp默认端口
1883 是mqtt tcp协议默认端口
15675 是web_mqtt ws协议默认端口
15671 management监听端口,前台浏览器的控制界面
5672 5671 (AMQP 0-9-1 without and with TLS)
4368(epmd) epmd代表Erlang端口映射守护进程
25672 (Erlang distrubution)

进入容器内部
通过docker ps -a查看部署的mq容器id,在通过 docker exec -it 容器id /bin/bash 进入容器内部

配置MQTT插件

默认安装后我们需要手动开启rabbitmq_management插件,rabbitmq_mqtt插件和rabbitmq_web_mqtt插件。

注意:若用docker启动则启动参数一定加上-p 1883:1883
docker exec <容器ID> rabbitmq-plugins enable rabbitmq_management

#提供与后端服务交互使用,对应端口1883
docker exec <容器ID> rabbitmq-plugins enable rabbitmq_mqtt

#提供与前端交互使用,对应端口15675
docker exec <容器ID> rabbitmq-plugins enable rabbitmq_web_mqtt

MQTT开启后登录web系统可看到如下图

开启成功后这时,MQTT服务就搭建好了。现在可以测试,MQTT通讯了。使用rabbit 作为MQTT服务的话,需要创建 topic类型的交换机。交换机名作为订阅和发布消息的Topic

创建MQTT的交换机
创建一个名为MQTT的交换机,类型为Topic很重要。这时服务端就创建好了。

使用MQTT 协议默认的交换机 Exchange 为 amp.topic,而我们订阅的主题会在 Queues 注册一个客户端队列,路由 Routing key 就是我们设置的主题。

开放宿主机防火墙端口
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=1883/tcp --permanent
firewall-cmd --zone=public --add-port=15675/tcp --permanent
firewall-cmd --zone=public --add-port=15675/tcp --permanent
firewall-cmd --reload

以上是关于docker安装Rabbitmq并配置挂载文件和启动MQTT的主要内容,如果未能解决你的问题,请参考以下文章

Docker安装MySQL 8.0并挂载数据及配置文件

docker 安装nginx并挂载配置文件和www目录以及日志目录

Centos下Docker中运行neo4j 并配置挂载本地文件

Docker安装GitLab并挂载数据

docker run 和 docker-compose 配置挂载 Volume 并运行 nginx

在centos搭建rabbitmq并制作docker镜像