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

相关推荐
Deitymoon2 小时前
STM32——oled显示字符串和数字
stm32·单片机·嵌入式硬件
Fu2067212 小时前
OSPF笔记 OSPF --- 开放式最短路径优先
网络·笔记
William Dawson2 小时前
【软考中级备考日记|系统集成项目管理工程师Day20:终章上岸|最后一页纸必考清单(考场直接默写、零基础必背)】
笔记·系统集成项目管理工程师
玄米乌龙茶1232 小时前
LLM 应用开发学习笔记:System Prompt 设计、注入风险与成本优化
笔记·学习·prompt
深圳市晨芯阳科技有限公司2 小时前
带延时功能的电压检测系列晨芯阳HC809
单片机·嵌入式硬件·电源芯片·深圳市晨芯阳科技有限公司
不是山谷.:.2 小时前
Axios的【接口防抖 + 请求失败重试 + 弱网提示】三合一高阶版封装
前端·javascript·vue.js·笔记·elementui·typescript
xiangw@GZ2 小时前
DDR2 / DDR3 / DDR4 颗粒信号差异对照表
单片机·嵌入式硬件
上海光华专利事务所2 小时前
知识产权管理系统的用户体验之道:从界面设计到效率跃升
经验分享
爱喝水的鱼丶2 小时前
SAP-ABAP:数据类型与数据对象(8篇) 第四篇:关系映射篇——从类型定义到对象实例的转化逻辑
开发语言·数据库·学习·sap·abap