在树莓派中部署emqx

使用Docker安装,这种方法最简单、干净,且方便后期维护和卸载。

目录

一.安装Docker

二.拉取并启动EMQX

三、有报错的情况(有报错看)

四、启动EMQX容器

五、验证与访问EMQX控制台


一.安装Docker

如果你的树莓派还没有安装 Docker,可以在终端执行官方的一键安装脚本:

bash 复制代码
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

安装完成后,可以输入 docker -v 确认是否安装成功。

二.拉取并启动EMQX

直接在终端中依次运行以下两条命令:

拉取最新的 EMQX 镜像(Docker 会自动识别并下载适配树莓派 ARM 架构的版本)

bash 复制代码
sudo docker pull emqx/emqx:latest

三、有报错的情况(有报错看)

插入报错警告:这里如果你输入后,如下图一样出现了报错(如果没有报错可跳到后面继续进行)

我输了两次,还是一样报错,怎么办?

别担心,这个问题,很常见。

你的树莓派在尝试连接 Docker 官方服务器下载镜像时,网络连接超时了。

这通常是因为 Docker 的官方镜像仓库位于海外,国内直接访问经常被墙或者限速,非常困难。

接下来配置国内镜像加速器

这是解决 Docker 拉取镜像超时问题最直接、最推荐的方法。你可以使用阿里云、网易、中科大等提供的公共加速服务。

1.编辑 Docker 的配置文件

在树莓派终端中,使用 sudo 权限和 nano 编辑器打开或创建 Docker 的守护进程配置文件 daemon.json

bash 复制代码
sudo nano /etc/docker/daemon.json

2.添加镜像源地址

在打开的文件中,粘贴以下内容。这里使用了网易的镜像源作为示例,它稳定且无需配置:

bash 复制代码
{
  "registry-mirrors": ["https://hub-mirror.c.163.com"]
}

3.保存并重启 Docker 服务

按下 Ctrl + X,然后按 Y,最后按 Enter 键来保存文件并退出编辑器。

为了让配置生效,你需要重启 Docker 服务:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

4.再次尝试拉取镜像

完成以上配置后,你的树莓派就会通过国内的镜像源来拉取镜像,速度会快很多。现在,你可以再次运行之前的命令:

bash 复制代码
sudo docker pull emqx/emqx:latest

上面是网络延迟导致的,一般配置加速器就行了。

等等、等等,怎么我又报错了!

如图:

从图中提供的最新报错信息 lookup hub-mirror.c.163.com on 10.***.***.**:53: no such host 来看,问题已经发生了转变。

现在不再是连接超时,而是 DNS 解析失败 。简单来说,你的树莓派无法将 hub-mirror.c.163.com 这个网址转换成一个有效的 IP 地址。这通常意味着你当前网络环境中的 DNS 服务器出了问题,或者它无法访问外部的域名。

此外,网易的 hub-mirror.c.163.com 镜像源近年来稳定性有所下降,有时会不稳定甚至停用。

因此,我们采用一个双重解决方案:

步骤一:更换 Docker 镜像源

我们将把镜像源更换为目前更稳定、速度更快的公共源。

打开 Docker 的配置文件:

bash 复制代码
sudo nano /etc/docker/daemon.json

将文件内容替换为以下其中一个推荐的镜像源地址:

bash 复制代码
{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}

或者,你也可以尝试这个:

bash 复制代码
{
  "registry-mirrors": ["https://docker.1ms.run"]
}

按下Ctrl + X , 然后按Y, 最后回车 保存并退出。

重启 Docker 服务以使新配置生效:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

步骤二:配置可靠的公共 DNS

这个步骤将确保你的树莓派能够正确解析任何域名。

1.备份原有的 DNS 配置文件(是个好习惯):

bash 复制代码
sudo cp /etc/resolv.conf /etc/resolv.conf.bak

2.编辑 resolv.conf 文件,使用阿里云和谷歌的公共 DNS 服务器:

bash 复制代码
sudo nano /etc/resolv.conf

3.将文件中的所有内容全部删除,然后粘贴以下两行:

bash 复制代码
nameserver 223.5.5.5
nameserver 8.8.8.8

按下Ctrl + X , 然后按Y, 最后回车 保存并退出。

再次尝试!

完成以上两个步骤后,你的网络和 Docker 配置都已经更新。现在再次尝试拉取 EMQX 镜像,应该就能成功了:

bash 复制代码
sudo docker pull emqx/emqx:latest

哦耶!成功了!(〃 ̄︶ ̄)人( ̄︶ ̄〃)

四、启动EMQX容器

bash 复制代码
sudo docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest

五、验证与访问EMQX控制台

通过浏览器访问 EMQX 的 Dashboard(数据管理后台):

获取树莓派 IP:在树莓派终端输入 hostname -I 查看。

访问后台:在电脑或手机的浏览器中输入 http://<你的树莓派IP>:18083。

(如:http://196.121,190,45:18083)

默认账号密码: 默认用户名:admin 默认密码:public

(首次登录后系统会强制要求你修改默认密码)。

进入控制台后,如果你编写了代码,订阅主题,发送数据,你就可以看到连接的设备、消息收发速率等实时监控数据。在编写代码(如 Python 的 paho-mqtt)连接时,Broker 地址填写你的树莓派 IP,端口默认为 1883 即可进行数据的发布与订阅。

相关推荐
智者知已应修善业6 分钟前
【4060BD_5V应用电路图】2022-12-24
驱动开发·经验分享·笔记·硬件架构·硬件工程
小弥儿31 分钟前
GitHub今日热榜 | 2026-09-18:腾讯双项目上榜
学习·开源
天空'之城1 小时前
单片机基础核心知识点汇总(四十)
单片机·嵌入式硬件
smartpi_ai1 小时前
离线语音模块误识别问题全面解决方案:命令词设计、防误触与灵敏度调优指南
人工智能·单片机·语音识别
LCG元1 小时前
STM32F103 驱动 HX711 称重实战:DOUT 就绪时序、增益切换陷阱与两点标定精度实测
stm32·单片机·嵌入式硬件
知识分享小能手3 小时前
深度学习学习教程,从入门到精通,深度生成模型 —— 知识点详解与代码实现(20)
人工智能·深度学习·学习
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(74):CompassMem——从相似度检索走向事件图上的记忆导航
论文阅读·人工智能·学习·开源·github
tang_04273 小时前
【Hi.Ltd 专题】第9期:Interop 配置互操作(JSON/INI/XML/YAML/注册表/扫码)
经验分享·c#·hi.ltd系列
小李不想当小白3 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
朝发如雪4 小时前
快速掌握单片机基础(6)(数据处理与传送指令)(跳转与分支指令)(栈操作与混合编程)(程序状态寄存器操作指令)(内存映射)
单片机·arm