在树莓派上安装宿主系统,Docker,Docker Compose V2和 Portainer

需要注意的是,我这一系列操作都是在英国的畅通无阻的网络接入上做的,所以不知道在其他网络环境会不会在某些步骤被卡住。

Changelog

  • 20220501 新的 Compose V2 已经继承进 Docker CLI
  • 20220202 Raspberry Pi OS 64-bit 正式版发布,修改下载信息
  • 20220108 初次发布

系统

Raspberry Pi OS Lite

这里强烈建议,如果树莓派是用于无头服务器用途,毫不犹豫在树莓派上面跑 Raspberry Pi OS Lite。主线 Debian 和 Ubuntu Server 我试了都或多或少有坑。更不用说 Raspberry Pi OS 还有 rpi-update 等好用的工具。

我跑的是 Raspberry Pi OS Lite arm64 版本,官网的 Download 里面是找不到的。

截至20220330,Raspberry Pi OS arm64版本支持机型包括 3B,3B+,3A+,4,400,CM3,CM3+,CM4,Zero 2 W。

下载链接在这:https://downloads.raspberrypi.org/raspios_lite_arm64/images/

现在可以在树莓派官方的 Operating system images 页直接找到 Raspberry Pi OS (64-bit)。

作为一个无头服务器,arm64 版本也没有什么坑。

一些技巧

如何在无头的情况下第一次启动即拥有 ssh?

启动盘烧好之后,在插上树莓派通电之前,直接在 boot 分区根目录创建一个文件名为 ssh 的空文件即可。

无论你在使用啥系统,这都应该容易办到。

例如使用的是 Windows,可以创建一个记事本文档,然后重命名为ssh,连带 .txt 后缀一起删掉。

不要手贱去使用 Debian Testing 分支

喜欢折腾的可以跳过,我不拦你。

很多需要用添加源来安装的软件,会出现源里面没有 Testing 分支的情况,从而增加折腾。

对于追新,Docker 化是一个不错的选择。

安装 Docker

Docker 真的是好东西。在用了 Docker 之后,一点都不想弄脏宿主系统,跑的东西能上 Docker 的都上了。

以至于后面变得越来越极端,要求自己做到一整个目录打包带走,到另一台机子上立马就能重新部署上。

你永远不会想因为某些破逼事而重装系统的。

而且随着 NAS 在家庭里的普及,现在的应用越来越 Docker 化了,为什么不呢?

Docker 官方已经给出了在 Raspberry Pi OS 上安装 Docker 的文档: https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script

总的来说就是两行命令

 curl -fsSL https://get.docker.com -o get-docker.sh
 sudo sh get-docker.sh

全自动的安装脚本。

在安装好之后,你应该能用这个命令看到你的 Docker 版本

docker -v

在我的树莓派上是这样的

root@xxx:~ # docker -v
Docker version 20.10.14, build a224086

安装 Docker Compose V2

Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用一个命令,您可以从您的配置中创建并启动所有服务。

Overview of Docker Compose

谁都不想每次启动容器都要打一堆命令。

新的Compose V2,支持作为Docker CLI一部分的compose命令,现在已经可用。

Overview of Docker Compose

所以现在不需要手动安装 Docker Compose V2 了。

只要安装好 Docker,Docker Compose V2 就会可用。

问一个版本号,测试一下

docker compose version

这时候就会回显 Docker Compose V2 的版本号。例如我的是这样的:

root@xxx:~ # docker compose version
Docker Compose version v2.3.3

至此 Docker Compose V2 已经安装成功了。

以下是弃用内容

我安装的是 Compose V2,所以调用 Docker Compose 的命令是 docker compose 而不是旧的 docker-compose。

Docker Compose V2 的安装方法,官方文档也已经写得很清楚:

https://docs.docker.com/compose/cli-command/

官方的示例里,下载的二进制文件是 x86_64 架构的,所以直接复制粘贴这些命令行是行不通的。

对于 arm64 架构的树莓派而言,仅需将二进制文件的链接修改为 aarch64 版本。

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.3.4/docker-compose-linux-aarch64 -o DOCKER_CONFIG/cli-plugins/docker-compose

然后给二进制文件附上执行权限

chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

安装 Portainer

厌倦了完全的命令行操作,给 Docker 整点 WEB 界面吧。

Portainer 是一个运行在 Docker 上的容器,所以不用担心它会弄脏你的宿主系统。

对于单机运行 Portainer,官方安装文档:

https://docs.portainer.io/v/ce-2.11/start/install/server/docker/linux

首先创建一个 Volume 给 Portainer 容器存储数据

docker volume create portainer_data

然后拉取和启动容器

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:linux-arm64

# 说明:
#
# docker run
#
# 以分离模式启动容器
# -d
#
# 8000 端口用于 Portainer Agent
# -p 8000:8000
#
# 9000 端口用于 HTTP
# -p 9000:9000
#
# 9443 端口用于 HTTPS
# -p 9443:9443
#
# 容器命名
# --name portainer
#
# 无论如何,在 Docker 启动之后自动启动容器
# --restart=always
#
# 通过 Sock 与本机的 Docker 进行通信
# -v /var/run/docker.sock:/var/run/docker.sock
#
# 挂载刚才创建的 volume 给容器,让 Portainer 可以保存数据
# -v portainer_data:/data 
# 
# 通过指定Tags,获取树莓派使用的 arm64 架构的容器
# portainer/portainer-ce:linux-arm64

需要注意的是,我的 Portainer 仅在内网使用,所以使用了 9000 HTTP,而不是 9443 HTTPS。

或者你准备在外面套一层反向代理,也可以使用 9000 端口,并配置好防火墙。

如果你需要通过配置 SSL 证书,直接把 Portainer 通过 HTTPS 暴露在公网上的话,请删除多余的 9000 端口映射。

访问 http://x.x.x.x:9000 或 https://x.x.x.x:9443 来继续配置 Portainer

chevron_left
chevron_right

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Comment
Name
Email
Website