已弃用;这是一款专为物联网(IoT)、工业物联网(IIoT)、联网车辆等场景设计的最具可扩展性的开源MQTT消息代理,具备高效处理大规模设备连接的能力,曾广泛应用于各类智能设备互联与数据传输领域,为海量终端提供稳定可靠的通信支持。
收藏数: 108
下载次数: 4631117
类型:

library/emqx自 v5.9.0 版本起,EMQX 已将原开源版与企业版的所有功能整合,统一采用 Business Source License (BSL) 1.1 许可证。
因此,EMQX 已停止发布 emqx 官方 Docker 镜像。v5.9.0 及以上版本仅通过以下 Docker Hub 仓库提供:
emqx/emqxemqx/emqx-enterprise| 标签 | 对应 Dockerfile 链接 |
|---|---|
5.7.2, 5.7 | 链接 |
5.8.8, 5.8, 5, latest | 链接 |
amd64(链接)、arm64v8(链接)emqx 目录(历史记录)library/emqx 标签 或 文件历史emqx 目录(历史记录)EMQX 是一款高性能、高可扩展的开源 MQTT broker,单集群可连接超 1 亿 IoT 设备,支持每秒 100 万条消息吞吐量及亚毫秒级延迟。
通过 Docker 命令启动 EMQX 容器:
bashdocker run -d --name emqx emqx:${tag}
示例(映射控制台端口 *** 和 MQTT 端口 1883):
bashdocker run -d --name emqx -p ***:*** -p 1883:1883 emqx:latest
容器内 EMQX 以 emqx 用户身份运行。
EMQX 配置文件 etc/emqx.conf 中的所有参数可通过环境变量设置,转换规则如下:
EMQX___ 替换为 .例如:
EMQX_DASHBOARD__DEFAULT_PASSWORD 对应 dashboard.default_password(控制台默认密码)EMQX_NODE__COOKIE 对应 node.cookie(节点 cookie)示例:设置控制台密码为 mysecret
bashdocker run -d --name emqx -e EMQX_DASHBOARD__DEFAULT_PASSWORD=mysecret -p ***:*** -p 1883:1883 emqx:latest
更多配置细节见 官方文档。
环境变量 EMQX_NODE__NAME 用于指定节点名称,默认格式为 <容器名>@<容器 IP>。若未指定,EMQX 会根据运行环境或节点发现配置自动生成。
EMQX 支持多种集群方式(如静态节点列表、DNS 等),详见 集群文档。以下为 Docker Compose 静态节点集群示例:
compose.yaml:yamlservices: emqx1: image: emqx:latest environment: - "EMQX_NODE__NAME=[***已删除]" - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - "EMQX_CLUSTER__STATIC__SEEDS=[[***已删除], [***已删除]]" networks: emqx-bridge: aliases: ["node1.emqx.io"] emqx2: image: emqx:latest environment: - "EMQX_NODE__NAME=[***已删除]" - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - "EMQX_CLUSTER__STATIC__SEEDS=[[***已删除], [***已删除]]" networks: emqx-bridge: aliases: ["node2.emqx.io"] networks: emqx-bridge: { driver: bridge }
bashdocker compose -p my_emqx up -d
bashdocker exec -it my_emqx_emqx1_1 sh -c "emqx ctl cluster status"
预期输出:
Cluster status: #{running_nodes => ['[***已删除]','[***已删除]'], stopped_nodes => []}
需持久化以下目录(数据部分存储于 /opt/emqx/data/mnesia/${node_name},需固定节点名称以恢复状态):
/opt/emqx/data(数据文件)/opt/emqx/log(日志文件)Docker Compose 配置示例(使用命名卷):
yamlvolumes: vol-emqx-data: { name: foo-emqx-data } vol-emqx-log: { name: foo-emqx-log } services: emqx: image: emqx:latest restart: always environment: EMQX_NODE__NAME: foo_emqx@127.0.0.1 # 固定节点名称(单节点可用回环 IP) volumes: - vol-emqx-data:/opt/emqx/data - vol-emqx-log:/opt/emqx/log
推荐参考 性能调优指南。若需通过 Docker 调优内核参数(Docker 版本 ≥1.12),示例命令如下:
bashdocker run -d --name emqx -p ***:*** -p 1883:1883 \ --sysctl fs.file-max=2097152 \ --sysctl fs.nr_open=2097152 \ --sysctl net.core.somaxconn=32768 \ --sysctl net.ipv4.tcp_max_syn_backlog=*** \ --sysctl net.core.netdev_max_backlog=*** \ --sysctl net.ipv4.ip_local_port_range="1000 65535" \ --sysctl net.core.rmem_default=262144 \ --sysctl net.core.wmem_default=262144 \ --sysctl net.core.rmem_max=*** \ --sysctl net.core.wmem_max=*** \ --sysctl net.core.optmem_max=*** \ --sysctl net.ipv4.tcp_rmem="1024 4096 ***" \ --sysctl net.ipv4.tcp_wmem="1024 4096 ***" \ --sysctl net.ipv4.tcp_max_tw_buckets=*** \ --sysctl net.ipv4.tcp_fin_timeout=15 \ emqx:latest
注意:不要以特权模式运行容器或挂载系统目录调优内核,存在安全风险。
emqx 目录 查看。使用前请确保遵守所有包含软件的许可证要求。
以下是 emqx 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务