阿里云部署开源MQTT平台mosquitto的docker操作

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,广泛用于物联网和传感器网络中。Mosquitto是一个流行的开源MQTT代理,可以在Docker中进行配置和部署。本文将详细介绍如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信。

一、安装docker

在开始之前,确保你的系统上已经安装了Docker。Docker提供了一个开放的平台,可以在容器中打包、分发和运行应用程序。你可以从Docker官方网站下载和安装适合你操作系统的Docker版本。

二、拉取Mosquitto Docker镜像

这里我们以阿里云的Ubuntu系统为例。想要在docker中部署MQTT的服务就得先找好一个开源平台,像mosquitto、EMQ X Broker 等都是开源的MQTT服务,这里我们以搭建mosquitto为例。

拉取mosquitto镜像:

docker pull eclipse-mosquitto

# 或者拉取1.6.14版本
docker pull eclipse-mosquitto:1.6.14

这里将拉取最新的mosquitto镜像到docker中。

三、创建mosquitto配置文件

在运行容器之前我们需要先创建一个配置文件,定义mosquitto的日志、配置等文件的存储路径,我们在服务器的根目录下创建一个文件夹。

# 创建文件夹
mkdir mosquitto

# 进入mosquitto文件夹
cd mosquitto

# 创建配置文件夹、日志文件夹
mkdir config

mkdir data

mkdir log

在config文件夹下编辑配置文件mosquitto.conf,并添加下列配置内容;

persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log

这里的存储地址可以根据自己的需求进行调整

四、创建mosquitto容器运行

在终端或命令行界面中运行以下命令来运行Mosquitto容器:

docker run -itd --name mosquitto -p 9042:1883 -p 9001:9001 -v /mosquitto/config:/mosquitto/config -v /mosquitto/data:/mosquitto/data -v /mosquitto/log:/mosquitto/log eclipse-mosquitto:1.6.14

解释一下这个命令:

  • -itd:以交互模式运行容器,启动之后在后台运行,方便查看输出日志和控制台信息。
  • -p 1883:1883:将宿主机的1883端口映射到容器内的1883端口,以便可以通过该端口与MQTT代理进行通信。
  • --name 容器名称
  • -v /mosquitto/config:/mosquitto/config:将本地的mosquitto-config文件夹挂载到容器内的/mosquitto/config路径,用于配置文件的持久化存储。
  • -v /mosquitto/data:/mosquitto/data:将本地的mosquitto-data文件夹挂载到容器内的/mosquitto/data路径,用于数据的持久化存储。
  • -v /mosquitto/log:/mosquitto/log:将本地的mosquitto-log文件夹挂载到容器内的/mosquitto/log路径,用于日志的持久化存储。
  • eclipse-mosquitto:指定要运行的Mosquitto镜像。

根据实际情况,将/mosquitto/config、/mosquitto/data和/mosquitto/log替换为你本地系统上的相应路径。

运行该命令后,Docker将会创建并运行Mosquitto容器,配置文件和数据将被挂载到容器中,使得配置的持久化和数据的保存得以实现。

docker ps

有看到mosquitto的容器名称证明启动成功。

五、测试MQTT通讯

我这里用到的是simulate-device.exe这个工具。工具下载地址:https://download.csdn.net/download/qq_45758854/88279562

看到connect变为灰色证明连接成功。我们可以随便订阅一个主题。

发布:

接收的信息:

如果一切正常,你应该能够在订阅者的终端中看到接收到的消息。

至此,你已经成功在Docker中配置和运行了Mosquitto MQTT代理,并进行了简单的MQTT通信测试。

六、总结

在本文中,我们学习了如何在Docker中配置Mosquitto MQTT代理。通过安装Docker、获取Mosquitto Docker镜像、创建配置文件、运行Mosquitto容器,并进行MQTT通信测试,我们成功实现了在容器化环境中运行和管理MQTT代理的目标。

使用Docker进行配置和部署MQTT代理,可以极大地简化安装和管理过程,并提供了更好的可移植性和可扩展性。无论是在本地开发环境还是在生产环境中,使用Docker可以快速搭建MQTT通信基础设施。

相关推荐
热爱跑步的恒川5 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
昌sit!6 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
追风林7 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
ClkLog-开源埋点用户分析8 小时前
ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
华为·开源·开源软件·harmonyos
A ?Charis9 小时前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
城南vision9 小时前
Docker学习—Docker核心概念总结
java·学习·docker
wclass-zhengge9 小时前
Docker篇(Docker Compose)
运维·docker·容器
北漂IT民工_程序员_ZG10 小时前
k8s集群安装(minikube)
云原生·容器·kubernetes
funnyZpC11 小时前
quartz集群增强版🎉
java·分布式·开源·集群·定时任务
梦魇梦狸º13 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github