
如果你使用 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)是一个基于Erlang/OTP构建的分布式、大规模可扩展、高扩展性MQTT消息代理。当前Docker镜像大小为37.1 MB,主要用于物联网(IoT)环境中的消息传输,支持百万级设备连接和高并发消息处理,是构建物联网消息基础设施的核心组件。
可通过以下命令自行构建Docker镜像:
bashgit clone -b master https://github.com/emqtt/emq_docker.git cd emq_docker docker build -t emq:latest .
EMQ容器中,Erlang MQTT Broker以emqtt用户身份运行。基本运行命令格式:
bashdocker run --rm -ti -v `pwd`:/some/path emq/image:tag some_command
基础启动示例:映射管理界面端口(***)和MQTT TCP端口(1883)
bashdocker run --rm -ti --name emq -p 18083:18083 -p 1883:1883 emq:latest
通过环境变量配置EMQ容器,遵循以下映射规则:
EMQ_的环境变量映射到配置文件,配置项中的.替换为__(双下划线)
EMQ_LISTENER__SSL__EXTERNAL__ACCEPTORS 对应配置项 listener.ssl.external.acceptorsPLATFORM_的环境变量映射到配置文件模板字符串
PLATFORM_ETC_DIR 对应模板 {{ platform_etc_dir }}EMQ_NAME、EMQ_HOSTEMQ核心配置
注意:https://github.com/emqtt/emqttd/blob/master/etc/emq.conf%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E9%85%8D%E7%BD%AE%E5%9D%87%E5%8F%AF%E9%80%9A%E8%BF%87%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%AE%BE%E7%BD%AE%EF%BC%8C%E4%BB%A5%E4%B8%8B%E4%B8%BA%E5%B8%B8%E7%94%A8%E9%85%8D%E7%BD%AE%E9%A1%B9%E7%A4%BA%E4%BE%8B%EF%BC%9A
| 选项 | 默认值 | 映射配置项 | 描述 |
|---|---|---|---|
| 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 | 管理界面默认密码 |
| 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节点名称(格式:name@ip/host) |
| 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/TLS端口 |
| EMQ_LISTENER__WS__EXTERNAL | 8083 | listener.ws.external | HTTP/WebSocket端口 |
| EMQ_LISTENER__WSS__EXTERNAL | 8084 | listener.wss.external | HTTPS/WSS端口 |
| EMQ_LISTENER__API__MGMT | 8080 | listener.api.mgmt | 管理API端口 |
| EMQ_MQTT__MAX_PACKET_SIZE | 64KB | mqtt.max_packet_size | 允许的最大数据包大小 |
配置示例:修改MQTT TCP端口为1883
bashdocker run --rm -ti --name emq -e EMQ_LISTENER__TCP__EXTERNAL=1883 -p 18083:18083 -p 1883:1883 emq:latest
插件加载配置
| 选项 | 默认值 | 描述 |
|---|---|---|
| EMQ_LOADED_PLUGINS | emq_recon,emq_modules,emq_retainer,emq_dashboard | 默认加载的插件列表 |
默认加载插件说明:
emq_recon:系统监控与诊断emq_modules:核心功能模块emq_retainer:消息留存服务emq_dashboard:Web管理界面插件加载示例:添加emq_auth_redis认证插件(支持任意分隔符)
bash# 逗号分隔 EMQ_LOADED_PLUGINS="emq_auth_redis,emq_recon,emq_modules,emq_retainer,emq_dashboard" # 空格分隔 EMQ_LOADED_PLUGINS="emq_auth_redis emq_recon emq_modules emq_retainer emq_dashboard"
插件参数配置
插件配置同样遵循EMQ_前缀和.转__规则。例如:
EMQ_AUTH__REDIS__SERVER 对应 auth.redis.serverEMQ_AUTH__REDIS__PASSWORD 对应 auth.redis.passwordRedis认证插件配置示例:
bashdocker run --rm -ti --name emq -p 18083:18083 -p 1883:1883 -p 4369:4369 \ -e EMQ_LISTENER__TCP__EXTERNAL=1883 \ -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 \ emq:latest
部署EMQ集群需暴露端口4369(Erlang分布式端口)和6000-6999(集群通信端口范围)。
集群加入示例:
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" \ emq:latest
推荐在Linux主机直接调优内核参数(参考http://emqttd-docs.readthedocs.io/en/latest/tune.html%EF%BC%89%E3%80%82%E8%8B%A5%E9%9C%80%E9%80%9A%E8%BF%87Docker%E8%B0%83%E4%BC%98%EF%BC%8C%E7%A1%AE%E4%BF%9DDocker%E7%89%88%E6%9C%AC%E2%89%A51.12%EF%BC%8C%E4%BD%BF%E7%94%A8%60--sysctl%60%E5%8F%82%E6%95%B0%EF%BC%9A
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目录进行内核调优,存在安全风险。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 cmaster11/emqx 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: