
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
EMQ(Erlang MQTT Broker)是一个分布式、大规模可扩展、高度可扩展的MQTT消息代理,采用Erlang/OTP编写。本Docker镜像提供了EMQ的便捷部署方式,当前镜像大小为37.1 MB。
可通过源码构建Docker镜像:
bashgit clone -b master https://github.com/emqtt/emq_docker.git cd emq_docker docker build -t emq:latest .
基本运行命令:
bashdocker run --rm -ti --name emq -p 18083:18083 -p 1883:1883 docker.xuanyuan.run/emq:latest
注意:EMQ在容器内以
emqtt用户身份运行
EMQ_为前缀的环境变量映射到配置文件,配置项中的.替换为__
EMQ_LISTENER__SSL__EXTERNAL__ACCEPTORS 对应 listener.ssl.external.acceptorsPLATFORM_为前缀的环境变量映射到配置文件中的模板字符串
PLATFORM_ETC_DIR 对应 {{ platform_etc_dir }}EMQ_NAME、EMQ_HOST| 选项 | 默认值 | 映射关系 | 描述 |
|---|---|---|---|
| EMQ_NAME | 容器名称 | none | EMQ节点短名称 |
| EMQ_HOST | 容器IP | none | EMQ节点主机(IP或FQDN) |
| EMQ_WAIT_TIME | 5 | none | 超时前等待时间(秒) |
| EMQ_JOIN_CLUSTER | none | none | 初始加入的集群 |
| EMQ_ADMIN_PASSWORD | public | none | EMQ管理界面密码 |
| PLATFORM_ETC_DIR | /opt/emqtt/etc | {{ platform_etc_dir }} | 配置文件目录 |
| PLATFORM_LOG_DIR | /opt/emqtt/log | {{ platform_log_dir }} | 日志目录 |
| EMQ_NODE__NAME | EMQ_NAME@EMQ_HOST | node.name | Erlang节点名称 |
| EMQ_NODE__COOKIE | emq_dist_cookie | node.cookie | 集群通信Cookie |
| EMQ_LOG__CONSOLE | console | log.console | 控制台日志输出方式 |
| EMQ_MQTT__ALLOW_ANONYMOUS | true | mqtt.allow_anonymous | 是否允许***登录 |
| EMQ_LISTENER__TCP__EXTERNAL | 1883 | listener.tcp.external | MQTT TCP端口 |
| EMQ_LISTENER__SSL__EXTERNAL | 8883 | listener.ssl.external | MQTT SSL端口 |
| EMQ_LISTENER__WS__EXTERNAL | 8083 | listener.ws.external | WebSocket端口 |
| EMQ_LISTENER__WSS__EXTERNAL | 8084 | listener.wss.external | WebSocket SSL端口 |
| EMQ_LISTENER__API__MGMT | 8080 | listener.api.mgmt | 管理API端口 |
| EMQ_MQTT__MAX_PACKET_SIZE | 64KB | mqtt.max_packet_size | 最大允许数据包大小 |
注:完整配置可参考https://github.com/emqtt/emqttd/blob/master/etc/emq.conf%EF%BC%8C%E6%98%A0%E5%B0%84%E8%A7%84%E5%88%99%E7%9B%B8%E5%90%8C
修改MQTT TCP端口为1883:
bashdocker run --rm -ti --name emq -e EMQ_LISTENER__TCP__EXTERNAL=1883 -p 18083:18083 -p 1883:1883 docker.xuanyuan.run/emq:latest
已加载插件配置
| 选项 | 默认值 | 描述 |
|---|---|---|
| EMQ_LOADED_PLUGINS | emq_recon,emq_modules,emq_retainer,emq_dashboard | 默认加载的插件 |
默认插件包括:emq_recon、emq_modules、emq_retainer、emq_dashboard
加载额外插件
通过EMQ_LOADED_PLUGINS环境变量指定要加载的插件,支持任意分隔符:
bash# 示例:加载emq_auth_redis插件 docker run --rm -ti --name emq -p 18083:18083 -p 1883:1883 \ -e EMQ_LOADED_PLUGINS="emq_auth_redis,emq_recon,emq_modules,emq_retainer,emq_dashboard" \ docker.xuanyuan.run/emq:latest
插件参数配置
插件配置同样遵循EMQ_前缀+__替换.的规则:
bash# 示例:配置Redis认证插件 docker run --rm -ti --name emq -p 18083:18083 -p 1883:1883 -p 4369:4369 \ -e EMQ_LOADED_PLUGINS="emq_auth_redis,emq_recon,emq_modules,emq_retainer,emq_dashboard" \ -e EMQ_AUTH__REDIS__SERVER="your.redis.server:6379" \ -e EMQ_AUTH__REDIS__PASSWORD="password_for_redis" \ -e EMQ_AUTH__REDIS__PASSWORD_HASH=plain \ docker.xuanyuan.run/emq:latest
bashdocker run --rm -ti --name emq -p 18083:18083 -p 1883:1883 -p 4369:4369 -p 6000-6100:6000-6100 \ -e EMQ_NAME="emq" \ -e EMQ_HOST="s2.emqtt.io" \ -e EMQ_LISTENER__TCP__EXTERNAL=1883 \ -e EMQ_JOIN_CLUSTER="emq@s1.emqtt.io" \ docker.xuanyuan.run/emq:latest
在Linux主机上,推荐直接调优主机内核。如需通过Docker调优,需确保Docker版本≥1.12:
bashdocker run --rm -ti --name emq -p 18083:18083 -p 1883:1883 -p 4369:4369 \ --sysctl fs.file-max=2097152 \ --sysctl fs.nr_open=2097152 \ --sysctl net.core.somaxconn=32768 \ --sysctl net.ipv4.tcp_max_syn_backlog=16384 \ --sysctl net.core.netdev_max_backlog=16384 \ --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=16777216 \ --sysctl net.core.wmem_max=16777216 \ --sysctl net.core.optmem_max=16777216 \ --sysctl net.ipv4.tcp_rmem=1024 4096 16777216 \ --sysctl net.ipv4.tcp_wmem=1024 4096 16777216 \ --sysctl net.ipv4.tcp_max_tw_buckets=1048576 \ --sysctl net.ipv4.tcp_fin_timeout=15 \ emq:latest
注意:不要以特权模式运行EMQ容器或挂载系统proc目录来调优内核,这是不安全的做法。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 dwdraju/emqx 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: