WSL2 的安装和 Ubuntu 的安装过程在这里不做介绍,Docker 的安装是直接安装 Docker-Desktop 版本即可。安装完后直接可以在 WSL2 中的 Ubuntu 执行 Docker 命令。
Mosquitto 配置文件
这里只记录 Docker 中部署 Mosquitto 服务的过程,首先在 Ubuntu 的用户目录中创建一个 mosquitto目录,里面分别创建 config、data 和 log 这三个目录。然后在 config 目录中创建 Mosquitto 的配置文件 mosquitto.conf,内容如下:
############################################
# 基础设置
############################################
listener 1883 0.0.0.0
protocol mqtt
persistence true
persistence_location /mosquitto/data/
autosave_interval 1800
autosave_on_changes true
############################################
# 日志设置
############################################
log_dest file /mosquitto/log/mosquitto.log
log_type error
log_type warning
log_type notice
log_type information
log_timestamp true
log_timestamp_format %Y-%m-%d %H:%M:%S
############################################
# MQTT 1883 端口(用户名密码)
############################################
allow_anonymous false
password_file /mosquitto/config/password.txt
# acl_file /mosquitto/config/acl.txt
max_connections 1000
############################################
# WebSocket
############################################
listener 9001 0.0.0.0
protocol websockets
############################################
# 安全限制
############################################
max_inflight_messages 20
message_size_limit 10485760
max_queued_messages 1000
max_queued_bytes 0
persistent_client_expiration 7d
max_keepalive 300
sys_interval 60
docker-compose.yml 编排文件
services:
mosquitto:
image: eclipse-mosquitto
container_name: mosquitto
restart: unless-stopped
ports:
- "1883:1883"
- "9001:9001"
volumes:
- ./config:/mosquitto/config
- ./data:/mosquitto/data
- ./log:/mosquitto/log
写好编排代码后执行 ❯ docker compose up -d 命令编排工具会自己构建容器并在后台运行,这时候我们就可以使用 mosquitto 的命令了。
创建 admin 用户和密码
因为我们的 mosquitto 配置文件中关闭了匿名连接,并启用了使用用户名和密码认证,所以需要先创建用户和密码才能用客户端连接 MQTT 服务。
创建用户和密码的命令:
docker exec -it mosquitto mosquitto_passwd -c /mosquitto/config/password.txt admin
这个命令会创建一个 admin 用户,并且提示你输入密码,密码输入完成后会退出当前交互命令。并且在本地目录的 config 目录中生成 password.txt 文件。
账户创建成功后就可以用用户名和密码连接 MQTT 服务了。
注意在 WSL 环境下,用 Windows 上的 MQTTX 连接我们部署的 mosquitto 服务需要把 Host 地址写为 localhost,因为我的 WSL 网络配置的是镜像模式,配置文件如下:
[wsl2] networkingMode=mirrored dnsTunneling=true autoProxy=true
MQTTX 连接
下图是 MQTTX 的连接配置信息:

配置完成后直接点击连接按钮即可,然后创建一个主题,这里我创建了一个 testtopic/a 主题,这里简单说下 mqtt 的主题就是和网站的网址有些类似,我们只要向我们创建的主题 testtopic/a 发送消息即可,然后订阅这个主题的订阅者就能收到消息了。
下面是MQTTX 发送消息并接收成功的图片:

我在我的另一台电脑上也安装 MQTTX 客户端进行了连接测试,发现没有问题,只要在一个局域网中即可。