树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX

这篇具有很好参考价值的文章主要介绍了树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、基于Ubuntu搭建Docker和portainer

1.Docker简介

相信接触过Linux系统和虚拟机的小伙伴都或多或少听说过Docker和Docker图形化工具portainer。

树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX
Docker 是一个开源的应用容器引擎,基于Go语言并遵循Apache2.0开源。Docker的容器是完全使用沙箱机制,相互之间不会有任何接口,所以不同容器运行互不影响。开发人员可以通过Docker将App变成一种标准的、可移植的、自管理的组件,我们可以在任何主流的操作系统中开发、调试和运行。

从概念上来看,Docker和传统的虚拟机比较类似,只是更轻量级,更方便使用。Docker和虚拟机最主要的区别有以下几点:
树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX

1.虚拟化技术依赖的是物理CPU和内存,是硬件级别的;Docker是构建在操作系统层面的,复用操作系统的容器化技术,所以Docker同样可以运行在虚拟机上面。

2.虚拟机中的操作系统是一个完整的操作系统镜像,比较复杂;而Docker比较轻量级,我们可以用Docker部署一个独立的redis,就类似于在虚拟机当中安装一个redis应用,但Docker部署的应用是完全隔离的。

3.传统的虚拟机技术是通过快照来保存状态的;而Docker引入了类似于源码管理的机制,将容器历史版本一一记录下来,切换成本非常之低。

4.传统的虚拟化技术在构建系统的时候非常复杂;而Docker可以通过一个简单的Dockerfile文件来构建整个容器,更重要的是Dockerfile可以手动编写,这样应用程序开发都可以通过发布Dockerfile来定义应用的环境和依赖,对于持续交付非常有利。

2.Ubuntu20.04安装Docker-ce

首先先卸载旧版本的Docker,旧版本的 Docker 被称为 docker、docker.io 或 docker-engine,新版本的是Docker-ce.

sudo apt-get remove docker docker-engine docker.io containerd runc

通过apt方式来卸载Ubuntu原有的旧版Docker

Docker相关依赖安装包

在链接里面下载 docker-ce 、docker-ce-cli、 containerd.io 三个不同的最新的安装包,我这里是ARM架构aarch64位的系统。

sudo curl -O https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/bionic/pool/stable/arm64/containerd.io\_1.2.6-3\_arm64.deb

sudo curl -O https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/bionic/pool/stable/arm64/docker-ce-cli\_19.03.9~3-0~ubuntu-bionic\_arm64.deb

sudo curl -O https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/bionic/pool/stable/arm64/docker-ce\_19.03.9~3-0~ubuntu-bionic\_arm64.deb

或者直接通过curl命令下载

sudo dpkg -i ./docker-ce-cli_20.10.2_3-0_ubuntu-bionic_arm64.deb 
sudo dpkg -i ./containerd.io_1.4.3-1_arm64.deb 
sudo dpkg -i ./docker-ce_20.10.2_3-0_ubuntu-bionic_arm64.deb 

cd到三个安装包的目录下,deb文件我们用dpkg命令解压并安装,zip文件我们用unzip命令解压,gz文件我们用tar命令解压并安装。注意三条指令是有顺序的,因为另外两个会安装第三个docker-ce安装的依赖项,如果下载顺序出错就会报错。

然后在etc目录下创建一个docker的文件夹用于配置镜像源地址,etc目录下是用来存放Linux系统主要的配置文件,例如用户的账号密码文件、各种服务的起始文件等.

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://fvp17nw5.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload

这里的镜像源仓库地址可以根据自己的来更换。

sudo service docker start
sudo docker run hello-world

启动Docker并运行helloworld来验证Docker是否安装成功,如果安装过程没报错并且终端会有 "helloworld from Docker"的回应就可以了。

systemctl start docker
sudo systemctl enable docker

通过systemct1命令设置Docker开机自启动。

3.Ubuntu20.04安装Docker图形化界面portainer

sudo docker pull portainer/portainer

用docker pull 命令拉取portainer镜像

sudo docker volume create portainer_data

创建一个docker容器存放portainer

sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

启动portainer并通过端口映射在网页中打开portainer,此时在网页地址中输入 http://你的树莓派的ip地址:9000/ 就可以访问portainer了,初次登录要设置用户名和密码。

树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX

4.Docker的常用命令和portainer使用

Docker的常用终端命令其实不多,主要用于镜像的下载和删除,容器的创建和删除,还有一些运行信息的查看,这些命令通过portainer图形化UI也可以实现。

#info|version
docker info       #显示docker的系统信息,包括镜像和容器的数量
docker -v   #显示docker的版本信息。

#帮助命令
docker 命令 --help #帮助命令

#镜像命令
docker images #查看所有本地主机上的镜像 可以使用docker image ls代替
docker search 镜像id #搜索镜像
docker pull 镜像id #下载镜像 docker image pull
docker rmi 镜像id #删除镜像 docker image rm

#容器命令
docker run 镜像id #新建容器并启动
docker ps 列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
	#删除所有容器
	docker rm -f $(docker ps -aq)  	 #删除所有的容器
	docker ps -a -q|xargs docker rm  #删除所有的容器
#启动和停止容器
docker start 容器id	#启动容器
docker restart 容器id	#重启容器
docker stop 容器id	#停止当前正在运行的容器
docker kill 容器id	#强制停止当前容器
#退出容器
exit 		#容器直接退出
ctrl +P +Q  #容器不停止退出 	---注意:这个很有用的操作
#其他常用命令
docker run -d 镜像名  #后台启动命令
docker logs 		#查看运行日志
docker cp 容器id:容器内路径  主机目的路径	#从容器内拷贝到主机上

Portainer 功能十分全面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm 集群和服务等集中管理和操作、登录用户管理和控制等功能。

通过边栏进入容器管理界面

树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX
点击add container
树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX
树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX

然后在images进入docker官网寻找需要添加的镜像,然后部署容器即可。

回到容器界面我们就可以发现刚刚部署的容器和容器的运行状态。

树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX
进入每个容器的界面我们还可以控制容器的运行,停止,重启,或者直接删除容器。

树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX
这些步骤与用docker命令来完成的效果是等价的。

二、基于Docker搭建homeassistant

1.homeassistant简介

树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX

相信玩过智能家居和物联网的小伙伴都会听过homeassistant的大名。Homeassistan是基于 Python开发 的智能家居系统,设备支持度高,支持自动化(Automation)、群组化(Group)、UI 客制化(Theme) 等等高度定制化设置。开源家庭自动化,将本地控制和隐私放在首位,由全球优秀开发者和DIY爱好者社区提供支持,非常适合在树莓派或本地服务器上运行。

hass是HomeAssistant运行的程序实例,hass由两部分的逻辑组成,内核(core)和组件(component)。hass内核主要用于管理Homeassistant的状态、事件、服务,hass的组件主要用于完成内核向外界发出交互,如设备的控制,自动化的执行等。

2.homeassistant不同版本的安装

刚开始安装一定要搞清楚自己的需求和不同版本的区别
树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX
OS版相当与官方封装好的一个操作系统,加载项商店和supervisor都有且功能最完整;Container版相当与一个容器来管理运行homeassistant,但是缺少加载项和supervisor;Core版相当于安装一堆父类程序;Supervised版则包含加载项商店和supervisor。

起初我想在刷好Ubuntu的树莓派上安装Supervised版,毕竟OS版需要重装homeassistant官方的系统而且有碍于后期树莓派的学习,然后我在github上找到了一种方法,通过OS代理方式,它把homeassistant OS 关键依赖封装好然后寄生在Linux系统之上来运行,然后再安装supervised。

Linux系统上安装含supervisor的homeassistant

按照大佬的说法我试了一遍

apt-get install \
apparmor \
jq \
wget \
curl \
udisks2 \
libglib2.0-bin \
network-manager \
dbus \
systemd-journal-remote -y

首先是安装一些依赖项,注意复制到终端要把换行删掉,还有配置network-manager会导致树莓派无法访问国外网站。

https://github.com/home-assistant/os-agent/releases/latest

https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb

然后下载这两个包,在终端cd到目录下用dpkg -i 命令来解压并安装相关依赖项。

dpkg -i homeassistant-supervised.deb
dpkg -i os-agent_1.4.1_linux_aarch64.deb

安装过程中可能会有报错,看看是依赖没安装好还是网络的问题,这里建议将树莓派设为静态IP,反正尝试多次后终于安装成功了,但是有一个warning提示我要reboot我就重启了树莓派,看到下面这提示应该没问题了。

[info] Within a few minutes you will be able to reach Home Assistant at:
[info] http://homeassistant.local:8123 or using the IP address of your
[info] machine: http://192.168.2.160:8123

我以为成功了,就在浏览器地址输入http://你的树莓派的ip地址:8123/ 进入homeassistant后却发现warnings和errors,主要提示是系统不适配和Docker没法正常运行homeassistant加载项的问题,后面我发现这个方法只适配装好Debian11的树莓派而不对Ubuntu提供适配和维护,最后害怕更新后依赖不足导致homeassistant用不了就删了homeassistant所有的镜像文件装一个Container版的。

docker pull homeassistant/home-assistant:stable

终端用docker命令拉取一个homeassistant稳定版的镜像

docker run -d --name homeassistant --privileged --restart=unless-stopped -e TZ=Asia/Shanghai -v /home/homeassistant:/config --network=host homeassistant/home-assistant:stable

创建容器来运行homeassistant并将homeassistant的卷挂载到物理机中,方便以后修改。

3.hacs插件商店的安装

下面我们来装hacs插件商店,在hacs中集成了很多有用的插件,例如Xiaomi Miot Auto,hasslife。

cd到homeassistant目录下用mkdir命令创建一个custom_components文件夹,该文件夹用于配置一些用户安装的组件,然后再cd到custom_components文件夹目录下创建一个hacs文件夹。

sudo mkdir custom_components
sudo mkdir hacs

https://github.com/hacs/integration/releases

通过上面链接下载好hacs.zip压缩包,然后通过mv命令将hacs.zip放到hacs目录下解压

sudo mv hacs.zip /home/homeassistant/custom_components/hacs
sudo unzip hacs.zip

然后在portainer中重启homeassistant然后在配置–设备与服务–集成中搜索hacs并添加,需要通过github账号来认证。

之前手上有一个刷好Debian系统的电视盒子,里面装好了含supervisor的homeassistant,以后有时间写个学习笔记讲讲homeassistant的基础玩法,UI配置,几大加载项Node-red(自动化流程图)、esphome(esp系列DIY接入homeassistant)、zigbee2mqtt(zigbee设备接入homeassistant)等的学习心得。

三、基于Docker搭建EMQX

1.MQTT协议和EMQX简介

MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议,由 IBM 发布,基本原理如下:
树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX
MQTT协议的核心是发布者和订阅者,是一种端对端的数据传输协议。

IoT 设备要运作,就必须连接到互联网,设备才能相互协作,以及与后端服务协同工作。而互联网的基础网络协议是 TCP/IP,MQTT 协议是基于 TCP/IP 协议栈而构建的, MQTT 协议在 IoT(Internet of things,物联网),小型设备应用,移动应用等方面有较广泛的应用。
树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX

EMQ X (简称 EMQ), 是一款完全开源,高度可伸缩,高可用的分布式 MQTT 消息服务器,同时也支持 CoAP/LwM2M 一站式 IoT 协议接入。EMQ 是 5G 时代万物互联的消息引擎,适用于 IoT、M2M 和移动应用程序,可处理千万级别的并发客户端。

2.Docker搭建EMQX

在终端用docker pull命令拉取emqx镜像

docker pull emqx/emqx

然后用docker run命令创建容器并将EMQX端口映射

docker run  -itd  --name emqService -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 emqx/emqx

然后在浏览器地址输入**http://你的树莓派的ip地址:18083/**打开EMQX即可,首次登录要注册。

树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX文章来源地址https://www.toymoban.com/news/detail-447793.html

到了这里,关于树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2.树莓派4B 64位操作系统 从零搭建深度学习项目运行环境

    探索目标 树莓派的系统烧录 树莓派的基础配置 树莓派的开机连接 树莓派的文件传输 树莓派的软件安装 树莓派的运行环境 树莓派的系统备份 测试运行现有模型 1.1 系统选择 1.1.1 Raspbian OS:官方的树莓派操作系统 ​ Raspbian OS 是官方支持的树莓派板卡操作系统。它集成了很多

    2024年01月16日
    浏览(38)
  • 树莓派4B+ubuntu20.04+ros1桌面配置(一)

    方案一 https://ubuntu.com/download/raspberry-pi 选择合适的版本下载 方案二 就是在软件中选择需要烧录的系统(我最后又装了20.04的ubuntu server系统,因为22的系统不能装ros1)  方案三(采用) 我终于找到了ubuntu20.04支持树莓派的桌面版!!!!!(其他版本的在这个链接的上级目录里)哦

    2024年01月19日
    浏览(94)
  • 树莓派4B +Ubuntu20.04+ROS1的使用(2)

    在这次实验中,主机是一台Ubuntu20.04.03系统的台式机,我们间通过这台准备来远程遥控树莓派上的ros1系统,它的ip地址是192.168.230.181 从机是一台搭载Ubuntu20.04桌面版+ros1的树莓派4B的只智能小车,它的ip地址是192.168.230.37(搭载方式见树莓派4B+ubuntu20.04+ros1桌面配置(一)-CSDN博客

    2024年01月15日
    浏览(46)
  • 基于树莓派4B的智能家居

    本博文的智能家居使用的树莓派4B作为驱动板,当然也可以使用搭载了freeRtos的STM32驱动板,由于时间匆忙,没办法把从0到1的教程写到博文中,以后有时间的话会出一篇从0到1搭建这个智能家居的博文,到时候也会添加一些新的功能,如触摸屏、红外遥控、等等。 工厂模式就

    2024年02月14日
    浏览(33)
  • 保姆级教程:树莓派4B 安装Ubuntu 22.04 Server操作系统

    1、在树莓派4B上安装Ubuntu 22.04 Desktop操作系统,使用Putty初始化远程访问更新系统,最后实现Ubuntu操作系统的远程桌面。 2、动手操作完,能熟悉了解树莓派操作系统的完整安装过程,熟悉相关的工具软件。 3、能够学会使用最简单的Ubuntu OS操作命令。 硬件: 1)主角:树莓派

    2023年04月19日
    浏览(94)
  • 树莓派4B+Ubuntu22.04 Server安装ROS2 Humble

    通过本章学习,了解ROS2相关版本,能够熟练掌握ROS2安装相关操作,最终让 Talker-listener 实例跑起来。 参考网站: ROS2官网:https://www.ros.org/ ROS2 Humble版本:https://docs.ros.org/en/humble/Installation.html 注意:如果对ROS已经有一定的了解,可以忽略此章节。 更多更具体的ROS介绍请查看

    2024年02月11日
    浏览(55)
  • 树莓派4B摄像头安装+Ubuntu22.04系统摄像头识别

    树莓派4B安装上摄像头后,是不能立即使用的,需要进行一些配置才能使用,本文详细说明了配置过程和测试结果。 执行以下命令,检测是否可以识别摄像头: 结果如下: 返回结果:supported=0 detected=0,说明此时摄像头硬件还没有识别出来,而且设备是不支持摄像头配件的,

    2024年02月22日
    浏览(74)
  • 【树莓派4B或CM4】ubuntu 18.04 CSI摄像头

    按照下面的图片里面的动画将CSI摄像头插入树莓派, 插入的时候要将树莓派的电给断掉 ,然后再上电,安装的时候注意触电的位置面向hdmi接口。 因为树莓派安装的是Ubuntu 18.04 LTS而不是树莓派的系统,所以需要安装raspi-config来对摄像头进行配置。具体步骤如下: 正常会出现

    2023年04月19日
    浏览(52)
  • 树莓派4B无屏幕安装Ubuntu20.04并通过ssh操作远程桌面

    因为手上没有合适的屏幕(其实是没有适配HDMI的屏幕,全是VGA接口) 所以用了些邪门(也不是啦)的方法去完成,整个过程只要读卡器和一根网线 在其中我遇到的困难包括但不限于:连不上wifi、树莓派烧录软件烧录的Ubuntu系统没有桌面、无屏幕和键盘、 这个过程踩了居多

    2024年02月03日
    浏览(54)
  • 基于树莓派4B的智能无人巡逻小车设计

    计算机工程实训报告 题目                 智能警用无人巡逻小车                                视频演示地址:树莓派暑期工程实训-模拟警用无人巡逻小车_哔哩哔哩_bilibili 一、实验内容与要求 本实验使用 Yahboom 生产的树莓派 4B,需要组员对树莓派小车的各

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包