欢迎光临
我们一直在努力

Docker 快速部署 EMQX:MQTT Broker 从安装到运维全指南

Docker 快速部署 EMQX:MQTT Broker 从安装到运维全指南

  • Docker 快速部署 EMQX:MQTT Broker 从安装到运维全指南
    • 一、前提条件
    • 二、核心部署步骤(社区版,快速上手)
      • 1. 拉取 EMQX 镜像
      • 2. 启动 EMQX 容器
    • 三、访问 EMQX Dashboard(管理控制台)
      • 1. 访问地址
      • 2. 默认登录信息
      • 3. Dashboard 功能简介
    • 四、Dashboard 用户维护(添加/修改/删除)
      • 1. 核心命令格式
      • 2. 实操示例
    • 五、进阶配置:数据持久化(避免数据丢失)
      • 社区版持久化启动命令
    • 六、EMQX 核心端口说明
    • 七、常见问题:忘记密码如何重置?
      • 1. 进入 EMQX 容器
      • 2. 执行密码重置命令
      • 3. 退出容器并验证

Docker 快速部署 EMQX:MQTT Broker 从安装到运维全指南

EMQX 作为一款高性能、可扩展的开源 MQTT 消息服务器,是物联网(IoT)场景中设备通信的核心组件,支持百万级设备并发连接,兼容 MQTT 3.1/3.1.1/5.0 协议。而通过 Docker 部署 EMQX,无需复杂的环境配置,即可快速搭建稳定的 MQTT Broker,极大降低入门门槛。本文将详细介绍 Docker 部署 EMQX 社区版/企业版的完整流程,包括核心部署、Dashboard 访问、用户维护、数据持久化及常见问题解决。

一、前提条件

  • 已安装 Docker 环境(若未安装,可参考 Docker 零基础入门指南);
  • 服务器开放后续需要用到的端口(1883、8083、8084、8883、18083),避免防火墙拦截。
  • 二、核心部署步骤(社区版,快速上手)

    1. 拉取 EMQX 镜像

    首先从 Docker Hub 拉取官方最新稳定版镜像(本文以社区版 5.8.6 为例,版本可根据需求替换):

    docker pull emqx/emqx:5.8.6

    拉取完成后,可通过 docker images 命令验证镜像是否成功下载:

    [root@mysqldb01 ~]# docker images | grep emqx
    emqx/emqx 5.8.6 ccafddce2f47 8 months ago 227MB

    2. 启动 EMQX 容器

    通过 docker run 命令启动容器,映射必要端口(后续会详细说明各端口用途):

    docker run -d –name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.8.6

    • 参数说明:
      • -d:后台运行容器;
      • –name emqx:给容器命名为 emqx(方便后续维护);
      • -p 宿主端口:容器端口:端口映射,将 EMQX 的核心端口映射到宿主机,确保外部可访问。

    启动后,通过 docker ps 命令验证容器是否正常运行:

    docker ps | grep emqx
    # 若 STATUS 为 Up 则表示运行正常
    # mqttx-web 是另外安装的,本次能看到 emqx/emqx:5.8.6 即可。
    [root@mysqldb01 ~]# docker ps | grep emqx
    527fb21d8a12 emqx/mqttx-web:v1.10.1 "docker-entrypoint.s…" 3 hours ago Up 3 hours 0.0.0.0:80->80/tcp, :::80->80/tcp mqttx-web
    c9c584b8ff5c emqx/emqx:5.8.6 "/usr/bin/docker-ent…" 3 hours ago Up 3 hours 4370/tcp, 0.0.0.0:1883->1883/tcp, :::1883->1883/tcp, 0.0.0.0:8083-8084->8083-8084/tcp, :::8083-8084->8083-8084/tcp, 0.0.0.0:8883->8883/tcp, :::8883->8883/tcp, 0.0.0.0:18083->18083/tcp, :::18083->18083/tcp, 5369/tcp emqx
    [root@mysqldb01 ~]#

    三、访问 EMQX Dashboard(管理控制台)

    EMQX 内置了可视化管理控制台(Dashboard),可通过浏览器便捷管理 Broker、监控连接状态等。

    1. 访问地址

    在浏览器中输入:http://你的服务器IP:18083(如 http://192.168.88.31:18083)。 在这里插入图片描述

    2. 默认登录信息

    • 用户名:admin
    • 密码:public

    ⚠️ 注意:默认密码过于简单,生产环境务必第一时间修改,避免安全风险!

    3. Dashboard 功能简介

    登录后可查看:

    • 设备连接数、消息收发统计;
    • 主题、订阅关系管理;
    • 客户端在线状态监控;
    • 系统配置(如 MQTT 协议参数、安全策略等)。

    四、Dashboard 用户维护(添加/修改/删除)

    通过命令行可快速维护 Dashboard 用户,无需进入 Dashboard 操作,适合批量管理或脚本自动化场景。

    1. 核心命令格式

    # 1. 添加 Dashboard 用户(支持添加描述)
    docker exec -it emqx ./bin/emqx_ctl admins add <用户名> <密码> <描述>

    # 2. 重置指定用户密码
    docker exec -it emqx ./bin/emqx_ctl admins passwd <用户名> <新密码>

    # 3. 删除指定用户
    docker exec -it emqx ./bin/emqx_ctl admins del <用户名>

    2. 实操示例

    # 示例1:添加用户 test,密码 test123,描述为 "测试用户"
    docker exec -it emqx ./bin/emqx_ctl admins add test test123 "测试用户"

    # 示例2:将 admin 用户密码改为 public123456(推荐生产环境使用复杂密码)
    docker exec -it emqx ./bin/emqx_ctl admins passwd admin public123456

    # 示例3:删除 test 用户
    docker exec -it emqx ./bin/emqx_ctl admins del test

    说明:若执行命令时提示“容器未找到”,将 emqx 替换为实际容器名称(可通过 docker ps 查看)。

    五、进阶配置:数据持久化(避免数据丢失)

    默认情况下,EMQX 的数据(如配置文件、日志、消息数据)存储在容器内部,若容器被删除,数据会丢失。通过 Docker 数据卷挂载,可将数据持久化到宿主机,确保数据安全。

    社区版持久化启动命令

    docker run -d –name emqx \\
    -p 1883:1883 -p 8083:8083 \\
    -p 8084:8084 -p 8883:8883 \\
    -p 18083:18083 \\
    -v emqx_data:/opt/emqx/data \\ # 数据持久化(消息、客户端状态等)
    -v emqx_log:/opt/emqx/log \\ # 日志持久化
    -v emqx_etc:/opt/emqx/etc \\ # 配置文件持久化
    emqx/emqx:5.8.6

    说明:-v 宿主机路径:容器路径 中,若宿主机路径使用卷名(如 emqx_data),Docker 会自动创建命名卷;也可指定具体路径(如 /home/emqx/data:/opt/emqx/data)。

    六、EMQX 核心端口说明

    EMQX 各端口对应不同功能,需确保端口未被占用且防火墙已开放:

    端口号协议类型用途说明
    1883 TCP MQTT 协议默认端口,用于设备与 Broker 之间的 TCP 连接
    8083 WebSocket MQTT over WebSocket 端口,用于浏览器/前端应用连接
    8084 WebSocket Secure WSS 端口,加密的 WebSocket 连接
    8883 SSL/TLS MQTT over SSL/TLS 端口,加密的 TCP 连接(生产环境推荐)
    18083 HTTP EMQX Dashboard 管理控制台端口

    七、常见问题:忘记密码如何重置?

    若忘记 Dashboard 登录密码,可通过进入容器执行命令重置,步骤如下:

    1. 进入 EMQX 容器

    # 替换 emqx 为你的容器名称或容器ID(通过 docker ps 查看)
    docker exec -it emqx /bin/bash

    2. 执行密码重置命令

    # 格式:./bin/emqx_ctl admins passwd <用户名> <新密码>
    ./bin/emqx_ctl admins passwd admin public123456

    3. 退出容器并验证

    执行 exit 退出容器,重新通过 Dashboard 登录即可。

    若有转载,请标明出处:https://blog.csdn.net/CharlesYuangc/article/details/155100684

    赞(0)
    未经允许不得转载:171主机测评 » Docker 快速部署 EMQX:MQTT Broker 从安装到运维全指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址