一、安装docker

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

二、拉取Mosquitto Docker镜像

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

拉取mosquitto镜像:

# 或者拉取2.0.18版本
docker pull eclipse-mosquitto:2.0.18
三、创建mosquitto配置文件

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

# 创建文件夹
mkdir /mnt/docker-root/mosquitto
 
# 进入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
四、创建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 eclipse-mosquitto:2.0.18

解释一下这个命令:

-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镜像。