在树莓派中部署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 即可进行数据的发布与订阅。

相关推荐
Upsy-Daisy13 小时前
Hermes Agent 学习笔记 04:工具调用系统,让 Agent 从“会说”变成“会做”
java·笔记·学习
楼田莉子13 小时前
C++20新特性:协程
开发语言·c++·后端·学习·c++20
weixin_4280053013 小时前
C#调用 AI学习从0开始-第2阶段(Function Calling+工具调用智能体)-第9天实战-实现计算器工具
开发语言·学习·c#·functioncalling·ai实现计算器工具
Deepoch13 小时前
Deepoc VLA开发板:除草机器人的持续学习与协同作业系统
人工智能·学习·机器人·开发板·具身模型·deepoc
John_ToDebug13 小时前
在 Windows 上搭建 Chromium 148 内核编译环境:一份实战笔记
chrome·经验分享·笔记
崇山峻岭之间13 小时前
单片机汉字显示实验
单片机·嵌入式硬件
快乐得小萝卜13 小时前
论文:π0.5
笔记·深度学习
guygg8813 小时前
基于C# + Halcon的通用ROI绘制工具
stm32·单片机·c#
sbjdhjd13 小时前
面试题完结 | 投票题 + 到岗时间 + 压力缓解
经验分享·笔记·面试·职场和发展·开源·求职招聘·印象笔记
诸葛思颖13 小时前
论文阅读笔记——Flow-of-Action
论文阅读·笔记