amd64/emqx本仓库是emqx官方镜像的amd64架构构建版本——更多信息请参见官方镜像文档中的"除amd64外的架构?"和官方镜像FAQ中的"镜像源在Git中已更改,该怎么办?"。
从v5.9.0版本开始,EMQX已将先前开源版和企业版的所有功能整合到单一产品中,并采用商业源代码许可证(BSL)1.1。
如想了解变更原因,请阅读此博客文章;如想了解新许可证详情,请阅读EMQX许可常见问题。
因此,我们停止发布emqx Docker官方镜像。EMQX v5.9.0+仅在emqx/emqx和emqx/emqx-enterprise Docker Hub仓库提供。
维护者:
EMQ Technologies
获取帮助:
Discussions 或 ***
Dockerfile链接5.7.2, 5.7
5.8.8, 5.8, 5, latest
提交issue:
[***]
支持的架构:(更多信息)
amd64, arm64v8
镜像 artifact 详情:
repo-info仓库的repos/emqx/目录 (历史记录)
(镜像元数据、传输大小等)
镜像更新:
official-images仓库的library/emqx标签
official-images仓库的library/emqx文件 (历史记录)
本描述的来源:
docs仓库的emqx/目录 (历史记录)
EMQX是全球最具可扩展性的开源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强企业。
!logo
在本docker镜像下执行命令:
console$ docker run -d --name emqx amd64/emqx:${tag}
例如:
console$ docker run -d --name emqx -p ***:*** -p 1883:1883 amd64/emqx:latest
EMQX代理在docker容器中以Linux用户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 ***:*** -p 1883:1883 amd64/emqx:latest
更多EMQX配置详情请阅读官方文档
环境变量EMQX_NODE__NAME允许指定EMQX节点名,默认为<container_name>@<container_ip>。
如未指定,EMQX会根据运行环境或用于节点发现的其他环境变量确定节点名。
EMQX支持多种集群方式,详情参见文档。
通过Docker Compose创建静态节点列表集群:
compose.yaml:yamlservices: emqx1: image: amd64/emqx:latest environment: - "EMQX_NODE__NAME=***" - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - "EMQX_CLUSTER__STATIC__SEEDS=[***, ***]" networks: emqx-bridge: aliases: - node1.emqx.io emqx2: image: amd64/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
bash$ docker exec -it my_emqx_emqx1_1 sh -c "emqx ctl cluster status" Cluster status: #{running_nodes => ['***','***'], 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: 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 ***:*** -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 \ amd64/emqx:latest
注意:不要以特权模式运行EMQX docker或挂载系统proc到容器中调优Linux内核,这是不安全的。
查看本镜像所包含软件的许可信息。
与所有Docker镜像一样,本镜像可能还包含其他软件,这些软件可能采用其他许可证(如基础发行版中的Bash等,以及主要软件的任何直接或间接依赖)。
可在repo-info仓库的emqx/目录中找到一些能够自动检测到的额外许可信息。
对于任何预构建镜像的使用,镜像用户有责任确保对本镜像的任何使用符合其中包含的所有软件的相关许可证。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务