arm64v8/emqx从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
文件问题的位置:
[***]
支持的架构:(更多信息)
amd64, arm64v8
已发布镜像制品详情:
repo-info仓库的repos/emqx/目录 (历史记录)
(镜像元数据、传输大小等)
镜像更新:
official-images仓库的library/emqx标签
official-images仓库的library/emqx文件 (历史记录)
此描述的来源:
docs仓库的emqx/目录 (历史记录)
EMQX是世界上最具可扩展性的开源MQTT代理,具有高性能,可在1个集群中连接1亿+ IoT设备,同时保持1M消息/秒的吞吐量和亚毫秒级延迟。
EMQX支持多种开放标准协议,如MQTT、HTTP、QUIC和WebSocket。它100%符合MQTT 5.0和3.x标准,并通过MQTT over TLS/SSL和各种认证机制确保双向通信安全。
借助内置强大的基于SQL的规则引擎,EMQX可以实时提取、过滤、丰富和转换IoT数据。此外,它通过无主分布式架构确保高可用性和水平可扩展性,并提供对运维友好的用户体验和出色的可观测性。
EMQX在50多个国家和地区拥有超过20K+企业用户,连接全球1亿+ IoT设备,受到400多家客户在IoT、IIoT、联网车辆等关键任务场景中的信任,包括70多家财富500强公司,如HPE、VMware、Verifone、上汽大众和爱立信。
!logo
在该docker镜像下执行一些命令
console$ docker run -d --name emqx arm64v8/emqx:${tag}
例如
console$ docker run -d --name emqx -p ***:*** -p 1883:1883 arm64v8/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 arm64v8/emqx:latest
请在官方文档中阅读更多关于EMQX配置的信息
环境变量EMQX_NODE__NAME允许您指定EMQX节点名称,默认为<container_name>@<container_ip>。
如果未指定,EMQX会根据运行环境或用于节点发现的其他环境变量确定其节点名称。
EMQX支持多种集群方式,详情请参见我们的文档。
让我们通过Docker Compose创建一个静态节点列表集群。
compose.yaml:yamlservices: emqx1: image: arm64v8/emqx:latest environment: - "EMQX_NODE__NAME=***" - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - "EMQX_CLUSTER__STATIC__SEEDS=[***, ***]" networks: emqx-bridge: aliases: - node1.emqx.io emqx2: image: arm64v8/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: arm64v8/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 \ arm64v8/emqx:latest
注意:不要以特权模式运行EMQX docker或将系统proc挂载到容器中以调优Linux内核,这是不安全的。
查看此镜像中包含的软件的许可证信息。
与所有Docker镜像一样,这些镜像可能还包含其他软件,这些软件可能受其他许可证(如基础发行版中的Bash等,以及主要软件的任何直接或间接依赖项)约束。
一些能够自动检测到的额外许可证信息可能会在repo-info仓库的emqx/目录中找到。
至于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用都符合其中包含的所有软件的相关许可证。

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