docker部署开源MQTT平台mosquitto

2024-10-21  本文已影响0人  zhanglb12

docker部署开源MQTT平台mosquitto

一、安装docker

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

二、拉取Mosquitto Docker镜像

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

拉取mosquitto镜像:

# 拉取2.0.20版本
docker pull eclipse-mosquitto:2.0.20
#或者 使用下面的方法 比较快
docker pull m.daocloud.io/docker.io/eclipse-mosquitto:2.0.20

#重命名image
docker tag dedeef6b0c07 eclipse-mosquitto:2.0.20
#删除镜像
docker rmi m.daocloud.io/docker.io/eclipse-mosquitto:2.0.20
docker rmi docker.m.daocloud.io/eclipse-mosquitto:2.0.20

三、创建mosquitto配置文件

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


# 创建文件夹
mkdir /mnt/docker-root/mosquitto
mkdir /mnt/docker-root/mosquitto/{config,data,log}
 
# 进入mosquitto文件夹
cd /mnt/docker-root/mosquitto
 
# 创建配置文件夹、日志文件夹
mkdir /mnt/docker-root/mosquitto/config
mkdir /mnt/docker-root/mosquitto/data
mkdir /mnt/docker-root/mosquitto/log

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

路径使用docker 的路径 不要写自己主机的路径

persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
listener 9001
port 1883
allow_anonymous true

# 布尔值,用于确定是否允许未提供用户名的客户端进行连接。 # 如果设置为false,则应创建一个密码文件(请参阅password_file选项)以控制经过身份验证的客户端访问。 # 如果未设置其他安全选项,则默认为true。 # 如果设置了password_filepsk_file,或者如果加载了实现用户名/密码或TLS-PSK检查的身份验证插件, # 则'allow_anonymous' 默认为false。

allow_anonymous true

# 将持久消息数据保存到磁盘(true/false)。这样可以保存有关所有消息的信息,包括订阅,当前运行中的消息和保留的消息。 # reserved_persistence是此选项的同义词。

persistence false

四、创建mosquitto容器运行
docker run -itd --name mosquitto -p 1883:1883 -p 9001:9001 -v /mnt/docker-root/mosquitto/config:/mosquitto/config -v /mnt/docker-root/mosquitto/data:/mosquitto/data -v /mnt/docker-root/mosquitto/log:/mosquitto/log eclipse-mosquitto:2.0.18
 
docker run -d --name mosquitto -p 1883:1883 -p 9001:9001 \
-v /mnt/docker-root/mosquitto/config:/mosquitto/config \
-v /mnt/docker-root/mosquitto/data:/mosquitto/data   \
-v /mnt/docker-root/mosquitto/log:/mosquitto/log --log-opt max-size=10m --log-opt max-file=3 eclipse-mosquitto:2.0.20

解释一下这个命令:

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

上一篇 下一篇

猜你喜欢

热点阅读