树莓派+Docker—轻松打造自己的智能家居控制中心本质上我只是个懒癌患者,不过看到值友的这篇群晖上用容器来运行 HomeAssistant (后文简称为 hass)和 Homebridge,来了点兴致,就继续来装个逼就跑吧 感觉可以写个《安装 HomeAssistant 有几种方法》的系列文章 之前我有投过一篇利用安卓设备来跑 hass 的,原意是想着用平板来运行,然后平板直接开着 hass 的管理页面,挂在墙上也是个不错的点子;或者直接用安卓盒子来跑也应该挺不错,在电视机上就能用 hass 页面来管理也应该挺溜的啊 不过似乎我用手机来做例子,把大家都带到沟里去了 同样的,本文也并不能教会一个小白如何使用 HomeAssistant,内容方面也仅仅是如何使用 Docker 在树莓派上安装 HomeAssistant 而已,不会讲如何配置。 要有派 推荐是树莓派3B,不过 2B 和 zero 也是可以的,然后安装好最新的 Raspbian Jessie Lite。简单来说就是在这 下载好 Raspbian Jessie Lite 的 IMG 镜像文件,然后写到 TF 卡中,插入树莓派的卡槽就可以了 这里有个需要注意的地方,新版 raspbian 默认没有开启 ssh,所以写好 TF 卡之后,还需要在 TF 卡中的 /boot/ 目录下创建一个 ssh 文件(没有后缀,内容为空即可,Windows 用户请开启文件后缀显示来确认文件不带任何后缀——比如 ssh.txt 这种就不行。)。 Windows 上的镜像写入工具我个人推荐 Rufus,在我之前的原创中有介绍——开源、免费、有绿色版(Portable)、还自带简体中文 如果是 Mac 或者 Linux 用户,可以用 DD 命令(要注意别写错盘了 Windows 上的终端软件还是继续推荐 XShell 和 XFtp,虽然最近有爆出官方后门,不过最新版已经解决了。只是家用的话,后门也可以说没啥影响,当然,你觉得不能接受的话可以用其他软件代替。另外要注意的是,国内代理商是家挺恶心的公司(思杰马克丁,有兴趣了解的话可以去逼乎搜一下),有修改官方安装包和证书,而且价格比原厂还贵,所以强烈建议直接到官方网站下载安装,家庭和学校使用是可以免费使用的(国内代理有修改安装包,没有家用或者学校这个选项)。 总的来说,你应该已经安装好 raspbian 并且能用终端连接上树莓派之后就可以开始下一步了。 要有容器好消息是有官方支持,所以我们只需要执行一行命令,然后等着就行了
坏消息是 Docker 官方源在国外,由于国家法律法规政策影响,安装速度无法保证,可能你需要重试几次并且多等等才能安装成功,总的来说失败就重新执行一下
安装成功之后,需要把 pi 用户添加到 docker 用户组,这样在执行 docker 命令时就不需要每次都带 sudo,当然,你可以不做这个操作,但是每次执行 docker 命令时要带 sudo。 上面的操作都执行完之后,断开终端重新链接一下树莓派,可以用以下命令查看是否安装成功(如果没有操作将 pi 用户添加到 docker 组,则需要在命令前加上 sudo ,以下皆是如此,不再重复提醒)。
如果有显示 docker 的版本安装信息,那么安装就完成了。如果有报错的话,就先重启再来试试 Ship & RunDocker 官方宣传语就是 Build, Ship, and Run Any App, Anywhere。这里我们不需要自己来 Build(构建)Image(镜像),只需要将别人构建好的镜像以 Pull(拉取)的方式 Ship 到本地,然后就可以 Run (运行)了 有一点要注意,Docker 不是虚拟机,可运行的镜像是受宿主机内核限制的,树莓派属于 arm 架构,raspbian 属于 linux ,因此只能运行同样基于 arm 架构 linux 的镜像(不能运行 x86 linux 镜像),通常 DockerHub 上可以在树莓派上运行的镜像都是以 rpi 开头的,或者在 tag(标签)里有写是 arm 架构镜像。 为了尽量减少使用命令行操作,这里先来跑一个基于 Web 页面管理容器的应用——Portainer。
这里 registry.docker-cn.com 是 Docker 中国的加速地址,后面 portainer/portainer:linux-arm-1.14.0 则表示获取 portainer 用户 portainer 应用的 linux-arm-1.14.0 版本镜像(也可以直接使用 linux-arm 标签来获取 linux-arm 的最新版,但是不同时间获取的“最新版”其实是不同的,建议先到 DockerHub 上查看具体的版本号)。 关于 Docker 中国可以访问 查看更多信息,可以通过官方中文文档对 Docker 做进一步了解(不过大部分还是英文 portainer 的信息则可以在 DockerHub 上查看(可能会因为法律法规影响访问速度比较慢
首先为 portainer 创建保存数据的目录,然后就是要运行 portainer 容器了。
因为大妈编辑器不支持插入代码,以上是一行命令,而不是多行,复制粘贴时要注意。 -d 表示以后台方式运行,--name 表示为容器命名,--restart 表示容器的重启策略,-p 表示容器暴露的端口,-v 表示挂载宿主机到容器的路径,最后的 registry.docker-cn.com/portainer/portainer:linux-arm-1.14.0 表示使用的镜像。
然后执行上面的命令查看容器是否开始运行,如果一切正常的话,应该可以看到 NAME(名称) 为 portainer 的容器 STATUS(状态) 为 Up x seconds,如果状态是 Exited 的话,就说明运行失败了。
可以执行上面的命令来移除未运行的容器,也可以用 CONTAINER ID(容器 ID) 来代替容器名称,然后再重新输入运行容器的命令(docker run 那一段),仔细检查看是否有输入错误。 如果一切顺利我们就可以开始下一步了——用 Web 来管理树莓派上的 Docker。 英语是一门很重要的语言在浏览器中输入树莓派的 IP 地址,然后加上端口号 9000 (端口号受到 docker run 的 -p 参数影响,如果有变化的则需要相应的变化)
首次打开 portainer 需要先为管理员设置一个密码,至少8位。 设置好之后就可以登录了,然后就是配置管理的 Docker 主机,由于这里是管理本机的 Docker,所以要选择第一项,然后点击 connect 按钮继续。 在管理页面可以看到当前的容器数量,运行中的和停止的,镜像数量等信息。因为 portainer 是以容器方式运行的,所以这里最少有一个运行中的容器、一个镜像。 为了解决拉取镜像速度慢的问题,需要配置一下 registries (镜像库),在左侧菜单中点击 registries,然后就可以看到添加 registries 的界面了,然后点击 Add Registry 按钮。 选择 Custom registry,然后在 Name 中输入 DockerCN,在 Registry URL 中输入 registry.docker-cn.com,点击 Add Registry 之后就可以在 Registry 列表中看到添加好的镜像库了。 这里要注意,Registry URL 只能输入支持 https 的地址,如果第三方提供的加速地址是 http 开头的那么是不能在这里添加的(添加会成功,但是无法拉取镜像)。 接下来就是获取 hass 的 Docker 镜像了,点击左侧菜单的 Images,进入到镜像管理页面。 在 Name (镜像名)中输入 lroguet/rpi-home-assistant,然后将 Registry 选择为我们添加的 DockerCN,然后点击 pull(拉取)按钮。 这里拉取是异步操作的,开始拉取之后可以离开页面,根据镜像的大小耗时也会有变化,耐心等待即可(不过也没有地方看进度条就是了 开始运行 hass 镜像之前先为 hass 配置文件创建好本地目录
点击左侧菜单的 Containers,进入到容器管理页面,可以看到当前正在运行的容器,并且可以进行各种操作。接着点击 Add Container 按钮,进入添加容器的页面。 为容器命名为 hass,然后在 Image configuration 中的 Name 中输入 lroguet/rpi-home-assistant:latest,同时记得将 Registry 选择为 DockerCN。 还需要修改下方 Advanced container settings 中的 Volumes、Network 设置。 点击 Volumes 后,通过 map additional volume 按钮添加挂载参数,挂载模式要选择 Bind。 第一条挂载参数,container 和 host 都输入 /etc/localtime,但是 host 这里要选择 Read-only。 第二条挂载参数,container输入 /config,host 输入 /home/pi/hass/config。 点击 Network 之后将 Network 选择为 host即可。 然后点击 Start container 运行容器,就可以看到 hass 开始运行了。通过点击容器名称,可以查看容器的运行状态。 Stats 中有容器的CPU占用,IO,内存占用等信息。比较有用的是 Logs(容器内部运行日志),Console(容器内部控制台)。 通过查看 Logs 可以检查一下容器内部运行情况,排除一些问题。比如这里,hass 首次运行时因为 python 包安装失败,hass 启动失败了。通过 restart (重启)容器重新尝试安装才成功。 Console 则可以直接在容器中操作控制台,额外做一些安装,比如一些额外插件之类的。
我们回到终端软件中,可以查看之前创建的 ~/hass/config 目录下的变化 可以看到 hass 的配置文件还有使用的数据库文件都已经在这里了,后续修改只需要使用 XFtp 连接树莓派然后进行编辑就可以了,剩下的操作跟普通安装情况下就是一样的了。 还能再简单点吗?可以 首先 docker 的安装步骤不能跳过,安装完毕后接着安装 docker-compose
然后创建好需要使用的目录
然后创建 docker-compose.yaml 文件
将下面的内容添加到 docker-compose.yaml 文件中
注意,所有缩进都必须是空格,不能用 tab。如果想在 Windows 上创建好文件然后复制进去,不要使用系统的文本编辑器,而是使用 notepad++ ,编码改成 utf-8。
然后在 ~ 目录下执行命令即可,会自动拉取镜像然后根据 docker-compose.yaml 的配置启动容器。运行成功之后,可以使用 docker ps -a 查看状态,如果都在运行就可以打开 portainer 的页面管理了。 FAQQ:为啥没有 Homebridge? A:因为我是个谷粉 Q:为啥把简单的方法写后面? A:因为我发现很多人都不看完,所以把简单的留在后面当是送给看完的人的礼物好了。 Q:楼主你写的玩意看起很厉害但是完全不懂啊? A:心里默念三个六,然后点收藏按钮就行了 Q:还能干嘛? A:理论上其他需要在树莓派上手动安装的应用都可以用 docker 的方式部署,只要有镜像。而且还不存在因为运行库依赖或冲突产生的问题——因为这些都已经在镜像中打包好了。 |
香港服务器多少钱一个月?哪家的香港服务器
4核4g6M50G盘20G防御云服务器价格多少钱?T
特发集团与华为签署全面合作协议
【身边的AI】高空抛物智能追溯解决方案,站
中海&华为签署战略深化合作协议
华为赵博:数字化转型成为地产企业最确定的
这款TCL K6V指纹锁不到千元即可买到?大品
凯迪仕指纹锁哪款好用?买凯迪仕指纹锁选哪