
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本仓库是https://hub.docker.com/_/emqx的`amd64`架构构建版本——更多信息请参见官方镜像文档中的https://github.com/docker-library/official-images#architectures-other-than-amd64和官方镜像FAQ中的https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what。
从v5.9.0版本开始,EMQX已将先前开源版和企业版的所有功能整合到单一产品中,并采用商业源代码许可证(BSL)1.1。
如想了解变更原因,请阅读此博客文章;如想了解新许可证详情,请阅读EMQX许可常见问题。
因此,我们停止发布emqx Docker官方镜像。EMQX v5.9.0+仅在https://hub.docker.com/r/emqx/emqx和https://hub.docker.com/r/emqx/emqx-enterprise Docker Hub仓库提供。
维护者:
https://github.com/emqx
获取帮助:
https://github.com/emqx/emqx/discussions 或 ***
Dockerfile链接https://github.com/emqx/emqx-docker/blob/35e70c8e602687db5a447c9573bde8ab77335fdc/5.7/Dockerfile
https://github.com/emqx/emqx-docker/blob/cddc2e939a0ec978fb381aaed4bf2cd172c625f6/5.8/Dockerfile
提交issue:
https://github.com/emqx/emqx-docker/issues?q=
支持的架构:(https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/emqx/, https://hub.docker.com/r/arm64v8/emqx/
镜像 artifact 详情:
https://github.com/docker-library/repo-info/blob/master/repos/emqx (https://github.com/docker-library/repo-info/commits/master/repos/emqx)
(镜像元数据、传输大小等)
镜像更新:
https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Femqx
https://github.com/docker-library/official-images/blob/master/library/emqx (https://github.com/docker-library/official-images/commits/master/library/emqx)
本描述的来源:
https://github.com/docker-library/docs/tree/master/emqx (https://github.com/docker-library/docs/commits/master/emqx)
https://emqx.io/是全球最具可扩展性的开源MQTT代理,高性能支持1个集群连接1亿+物联网设备,同时保持100万消息/秒的吞吐量和亚毫秒级延迟。
EMQX支持多种开放标准协议,如MQTT、HTTP、QUIC和WebSocket。100%兼容MQTT 5.0和3.x标准,并通过MQTT over TLS/SSL及多种认证机制确保双向通信安全。
凭借内置强大的基于SQL的规则引擎,EMQX可实时提取、过滤、丰富和转换物联网数据。此外,其无主分布式架构确保高可用性和水平扩展性,并提供运维友好的用户体验和出色的可观测性。
EMQX在全球50多个国家和地区拥有超过20,000+企业用户,连接全球1亿+物联网设备,受到400多家客户在物联网、工业物联网、智能网联汽车等关键业务场景的信任,包括HPE、VMware、Verifone、上汽大众、爱立信等70多家财富500强企业。
在本docker镜像下执行命令:
console$ docker run -d --name emqx amd64/emqx:${tag}
例如:
console$ docker run -d --name emqx -p 18083:18083 -p 1883:1883 amd64/emqx:latest
EMQX代理在docker容器中以Linux用户emqx运行。
https://github.com/emqx/emqx/blob/master/apps/emqx/etc/emqx.conf中的所有EMQX配置均可通过环境变量进行配置。
示例:
EMQX_DASHBOARD__DEFAULT_PASSWORD <--> dashboard.default_password EMQX_NODE__COOKIE <--> node.cookie EMQX_LISTENERS__SSL__default__ENABLE <--> listeners.ssl.default.enable
注意:此处使用小写"default"并非拼写错误,用于演示小写环境变量等效。
EMQX___替换为.例如,将MQTT TCP端口设置为1883:
console$ docker run -d --name emqx -e EMQX_DASHBOARD__DEFAULT_PASSWORD=mysecret -p 18083:18083 -p 1883:1883 amd64/emqx:latest
更多EMQX配置详情请阅读官方文档
EMQX节点名配置
环境变量EMQX_NODE__NAME允许指定EMQX节点名,默认为<container_name>@<container_ip>。
如未指定,EMQX会根据运行环境或用于节点发现的其他环境变量确定节点名。
EMQX支持多种集群方式,详情参见文档。
通过Docker Compose创建静态节点列表集群:
compose.yaml:yamlservices: emqx1: image: docker.xuanyuan.run/amd64/emqx:latest environment: - "EMQX_NODE__NAME=emqx@node1.emqx.io" - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" networks: emqx-bridge: aliases: - node1.emqx.io emqx2: image: docker.xuanyuan.run/amd64/emqx:latest environment: - "EMQX_NODE__NAME=emqx@node2.emqx.io" - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" networks: emqx-bridge: aliases: - node2.emqx.io networks: emqx-bridge: driver: bridge
bashdocker compose -p my_emqx up -d
bash$ docker exec -it my_emqx_emqx1_1 sh -c "emqx ctl cluster status" Cluster status: #{running_nodes => ['emqx@node1.emqx.io','emqx@node2.emqx.io'], stopped_nodes => []}
如需持久化EMQX docker容器,需保留以下目录:
/opt/emqx/data/opt/emqx/log由于这些目录中的数据部分存储在/opt/emqx/data/mnesia/${node_name}下,用户需复用相同节点名才能查看之前的状态。为此,需将EMQX_NODE__NAME的主机部分设置为静态值,确保容器重启或重建时不变。可以是容器名、主机名或仅单个节点时的环回IP地址127.0.0.1。
使用Docker Compose时,配置示例如下:
yamlvolumes: vol-emqx-data: name: foo-emqx-data vol-emqx-log: name: foo-emqx-log services: emqx: image: docker.xuanyuan.run/amd64/emqx:latest restart: always environment: EMQX_NODE__NAME: foo_emqx@127.0.0.1 volumes: - vol-emqx-data:/opt/emqx/data - vol-emqx-log:/opt/emqx/log
在Linux主机上,最简单的方法是参考调优指南。
如需通过docker调优Linux内核,需确保docker版本为最新(>=1.12):
bashdocker run -d --name emqx -p 18083:18083 -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=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 \ amd64/emqx:latest
注意:不要以特权模式运行EMQX docker或挂载系统proc到容器中调优Linux内核,这是不安全的。
查看本镜像所包含软件的https://github.com/emqx/emqx/blob/master/LICENSE。
与所有Docker镜像一样,本镜像可能还包含其他软件,这些软件可能采用其他许可证(如基础发行版中的Bash等,以及主要软件的任何直接或间接依赖)。
可在https://github.com/docker-library/repo-info/tree/master/repos/emqx中找到一些能够自动检测到的额外许可信息。
对于任何预构建镜像的使用,镜像用户有责任确保对本镜像的任何使用符合其中包含的所有软件的相关许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 amd64/emqx 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: