本帖最后由 WT_0213 于 2024-5-6 14:16 编辑
内容简介
内容主要包括安装 Docker、Portainer、Home Assistant、Mosquitto(主要用于mqtt服务)
更新软件包
在安装这些应用之前最好先更新下软件包列表和软件包
执行以下命令
# 是一个常用的命令,用于更新系统中可用软件包的信息。此命令只是更新软件包列表,而不会实际安装或升级软件包
# 如果有可用的更新,sudo apt-get update 会下载并更新本地系统的软件包列表。这个列表包含了可用软件包的名称、版本和其他相关信息。
sudo apt-get update
# 用于更新系统中的软件包
sudo apt-get upgrade
默认也不需要更换源,速度还算可以。
Docker安装
简介来自百度百科:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
简单来说,Docker就是个小工具,可以把程序,库文件,配置文件都一起“打包”。然后,在任何一个计算机上,都可以使用这个打好的包。
有了容器,一个命令就能把程序跑起来,做到了一次打包,就可以到处使用。
还有就是在Docker上面随意折腾,不会影响到宿主机的环境,搞坏了重新添加容器就好了。
安装
接下来安装docker,通过使用官方脚本一键即可安装
# 这个命令将自动从官方Docker仓库下载并安装最新版本的Docker。
curl -sSL https://get.docker.com | sh
安装完成
root@raspberrypi:~# curl -sSL https://get.docker.com | sh
# Executing docker install script, commit: e5543d473431b782227f8908005543bb4389b8de
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c install -m 0755 -d /etc/apt/keyrings
+ sh -c curl -fsSL "https://download.docker.com/linux/debian/gpg" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
+ sh -c chmod a+r /etc/apt/keyrings/docker.gpg
+ sh -c echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null
+ sh -c docker version
Client: Docker Engine - Community
Version: 26.1.0
API version: 1.45
Go version: go1.21.9
Git commit: 9714adc
Built: Mon Apr 22 17:06:59 2024
OS/Arch: linux/arm64
Context: default
Server: Docker Engine - Community
Engine:
Version: 26.1.0
API version: 1.45 (minimum version 1.24)
Go version: go1.21.9
Git commit: c8af8eb
Built: Mon Apr 22 17:06:59 2024
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.31
GitCommit: e377cd56a71523140ca6ae87e30244719194a521
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
================================================================================
To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:
dockerd-rootless-setuptool.sh install
Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.
To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/
WARNING: Access to the remote API on a privileged Docker daemon is equivalent
to root access on the host. Refer to the 'Docker daemon attack surface'
documentation for details: https://docs.docker.com/go/attack-surface/
================================================================================
root@raspberrypi:~#
启动
执行命令启动docker服务
# 启用 docker
sudo systemctl enable docker
# 启动 docker服务
sudo systemctl start docker
# 查询docker服务状态
sudo systemctl status docker
输入以上命令后,如果没有报错,基本上都能安装成功,下方为安装完毕后样子。
root@raspberrypi:~# sudo systemctl enable docker
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker
root@raspberrypi:~# sudo systemctl start docker
root@raspberrypi:~# sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabl>
Active: active (running) since Thu 2024-04-25 21:08:34 CST; 49min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 3444 (dockerd)
Tasks: 10
CPU: 714ms
CGroup: /system.slice/docker.service
└─3444 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont>
4月 25 21:08:29 raspberrypi systemd[1]: Starting docker.service - Docker Applic>
4月 25 21:08:29 raspberrypi dockerd[3444]: time="2024-04-25T21:08:29.306029998+>
4月 25 21:08:32 raspberrypi dockerd[3444]: time="2024-04-25T21:08:32.092595575+>
4月 25 21:08:32 raspberrypi dockerd[3444]: time="2024-04-25T21:08:32.625661950+>
4月 25 21:08:33 raspberrypi dockerd[3444]: time="2024-04-25T21:08:33.823113467+>
4月 25 21:08:33 raspberrypi dockerd[3444]: time="2024-04-25T21:08:33.823149097+>
4月 25 21:08:33 raspberrypi dockerd[3444]: time="2024-04-25T21:08:33.823183430+>
4月 25 21:08:33 raspberrypi dockerd[3444]: time="2024-04-25T21:08:33.823328317+>
4月 25 21:08:34 raspberrypi dockerd[3444]: time="2024-04-25T21:08:34.427742672+>
4月 25 21:08:34 raspberrypi systemd[1]: Started docker.service - Docker Applica>
lines 1-21/21 (END)
Portainer面板
Portainer是Docker的图形化管理WEB工具,由GO语言编写的,提供状态显示、应用模板快速部署、对于Docker(容器、镜像、网络、数据卷)的基本操作、日志显示、容器控制台等功能。
安装
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-ce
docker run 执行流程
首先在指定镜像上创建一个可写的容器层
然后使用指定的命令(COMMAND)启动它
docker run 相当于执行了两个 API:/containers/create、/containers/(id)/start
option |
描述 |
-v |
目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录> |
-d |
守护进程,后台运行该容器 |
-p |
指定端口映射,格式:主机(宿主)端口:容器端口 |
-P |
随机端口映射,容器内部端口随机映射到主机的端口(49153起始 49153到65535) |
–name “xxx” |
容器名字 |
–restart Docker |
重启后,容器是否自动重启 |
输入以上命令后,如果没有报错,基本上都能安装成功,下方为安装完毕后样子。
root@raspberrypi:~# 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-ce
Unable to find image 'portainer/portainer-ce:latest' locally
latest: Pulling from portainer/portainer-ce
57654d40e0a5: Pull complete
1f476acfabd6: Pull complete
23f2184d3136: Pull complete
e21d017187f1: Pull complete
bfa9cfee4c8e: Pull complete
9d8366b4fa62: Pull complete
d55f4e10dc55: Pull complete
5230628c9a1d: Pull complete
dd27a37dee51: Pull complete
5cc1bbad4ed2: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:4a1ceadd7f7898d9190ee0a6d22234c4323aefd80e796e84f5e57127f74370f1
Status: Downloaded newer image for portainer/portainer-ce:latest
92bda70b94659990de3c2c58819959732c7f466ef1b9edbc2a658b1695dafa90
root@raspberrypi:~#
启动
打开浏览器,输入树莓派的IP:9000打开页面就可以看到Portainer管理页面
有两个选项:
New Portainer Installation:新安装,暂时设置admin的密码为portainer
Restore Portainer from backup:从之前的备份中恢复
这里我们选择新安装Portainer。创建用户⚠️注意这里密码要求
密码的长度必须至少为12个字符。
完成用户创建,出现这个别慌。
大体意思是
新Portainer安装
出于安全考虑,您的Portainer实例超时。要重新启用Portainer实例,您需要重新启动Portainer。
有关更多信息,请查看我们的文档。
然后回到命令行,执行以下命令
# 查看当前正在运行的容器
docker ps
# 重启容器 docker restart <container_name_or_id> 将<container_name_or_id>替换为实际的容器名称或ID
docker restart portainer
输入以上命令后,如果没有报错,基本上都能安装成功,下方为安装完毕后样子。
root@raspberrypi:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
92bda70b9465 portainer/portainer-ce "/portainer" 16 minutes ago Up 15 minutes 8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp portainer
root@raspberrypi:~# docker restart portainer
portainer
root@raspberrypi:~#
然后再次打开浏览器,刷新一下页面会再次出现
再次输入两次密码,点击Create user即可进入管理界面。
点击Get Started
好了Portainer也搞定了,点击进入详情查看里面包含容器、镜像、挂载目录等模块。
这样我们管理起来就容易很多了。
本机容器列表:支持启动、停止、杀掉进程、重启、删除、添加容器等操作,和敲命令效果是一样的。
本机镜像列表:支持pull镜像、查看当前本机已安装的镜像.
篇幅感觉有点长了,分开发布吧。
就怕编辑太多一保存失败了。内容丢失就惨了。
关联上一篇
[智能家居]树莓派搭建全屋智能之系统烧录
https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44571
关联下一篇
【智能家居】树莓派搭建全屋智能之环境搭建02
https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44577