
efrecon/mqtt-client基于Alpine的轻量级镜像,包含mosquitto MQTT客户端工具(mosquitto_sub和mosquitto_pub),用于订阅和发布MQTT主题。镜像内置Mozilla根证书列表,支持与主流CA签名的远程服务器安全通信,同时提供/opt/certs卷用于放置自定义CA或客户端证书。
/opt/certs卷挂载自定义证书pub和sub快捷命令,简化操作(替代完整命令mosquitto_pub和mosquitto_sub)镜像暴露/opt/certs卷,可用于放置CA证书或客户端证书以实现可信通信。内置的Mozilla根证书允许连接到主流CA签名的远程服务器,无需额外配置。
使用sub命令(或完整命令mosquitto_sub)订阅主题。以下示例连接到测试服务器并订阅所有主题(#通配符),-v参数显示接收到的 payload:
bashdocker run -it --rm efrecon/mqtt-client sub \ -h test.mosquitto.org \ -t "#" \ -v
连接TLS安全服务器(如端口8883)时,可指定证书路径:
bashdocker run -it --rm efrecon/mqtt-client sub \ -h iot.eclipse.org \ -p 8883 \ --capath /etc/ssl/certs \ -t "#" \ -v
使用pub命令(或完整命令mosquitto_pub)发布消息。以下示例向test/testdevice主题发布JSON数据:
bashdocker run -it --rm efrecon/mqtt-client pub \ -h test.mosquitto.org \ -p 1883 \ -t "test/testdevice" \ -m '[{"json":"validated","data":42},{"to":2,"test":"with"}]'
发布文件中的复杂数据时,需挂载本地目录。例如发布当前目录下的datafile.json:
bashdocker run -it --rm -v ${PWD}:/data/ efrecon/mqtt-client pub \ -h test.mosquitto.org \ -p 1883 \ -t "test/testdevice" \ -f /data/datafile.json
遇到连接问题时,建议使用-d参数开启调试模式,查看连接详情:
bashdocker run -it --rm efrecon/mqtt-client sub \ -h test.mosquitto.org \ -t "#" \ -d
部分MQTT服务器要求指定客户端ID,可通过-i参数设置:
bashdocker run -it --rm efrecon/mqtt-client pub \ -h test.mosquitto.org \ -t "test/testdevice" \ -i "my-client-id" \ -m "test message"
在macOS系统上运行时,需指定平台:
bashdocker run --platform linux/amd64 -it --rm efrecon/mqtt-client sub -h test.mosquitto.org -t "#" -v
/etc/ca-certificates/update.d/certhash重新哈希证书 bundle,确保mosquitto正确识别证书





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