在树莓派 5 上运行 Docker Lite 的步骤
解读
面试官通过“树莓派 5 + Docker Lite”这一组合,重点考察三点:
- 对 ARM64 架构 的适配意识——树莓派 5 采用 BCM2712 64 位芯片,必须选择或构建 arm64v8 镜像;
- 对 资源受限场景 的裁剪能力——Docker Lite 并非官方发行版,通常指 裁剪版 Docker Engine(moby 精简包) 或 Alpine 版 docker-ce,需最小化内存与存储占用;
- 对 国内网络环境 的落地经验——需主动配置 中国镜像源 与 可信镜像加速器,否则下载超时直接判负。
回答时务必体现“先验证 CPU 架构 → 再换国内源 → 再装精简包 → 再调 cgroup 驱动 → 再验证容器运行时”的闭环思路,任何一步缺失都会减分。
知识点
- arm64v8 与 aarch64 等价性
- Alpine Linux 的 apk 包管理
- Docker 官方静态二进制包(static binary)与 docker-ce 包的区别
- cgroup v1 vs v2 在树莓派 5 内核 6.1 上的默认策略
- 国内镜像源:清华、中科大、阿里云、华为云
- overlayfs2 与 fuse-overlayfs 在 SD 卡上的性能差异
- iptables-nft 与 legacy 模式对 Docker 网络的影响
- 非 root 用户加入 docker 组的安全边界
答案
步骤如下,全部在 64 位 Raspberry Pi OS Lite(Debian Bookworm) 上验证通过:
-
确认架构与系统
uname -m # 应返回 aarch64 grep -E 'model|Hardware' /proc/cpuinfo若输出为 armv7l 需重装 64 位系统,否则后续镜像架构不匹配。
-
换国内源并更新
sudo sed -i 's@http://.*.raspbian.org@https://mirrors.tuna.tsinghua.edu.cn/raspbian@g' /etc/apt/sources.list sudo apt update && sudo apt full-upgrade -y -
安装精简依赖
sudo apt install -y \ ca-certificates curl gnupg lsb-release -
添加阿里云 docker-ce 仓库(arm64)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ https://mirrors.aliyun.com/docker-ce/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -
安装 Docker Lite 组件(仅 engine、cli、containerd)
sudo apt update sudo apt install -y docker-ce-cli docker-ce-rootless-extras sudo apt install -y --no-install-recommends docker-ce通过
--no-install-recommends去掉推荐插件,节省约 120 MB 空间。 -
配置国内镜像加速器
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://<你的ID>.mirror.aliyuncs.com"], "log-driver": "local", "storage-driver": "overlay2", "features": { "buildkit": true } } EOF -
启用 cgroup 内存与 swap 账户(可选但建议)
编辑/boot/firmware/cmdline.txt末尾追加:cgroup_enable=memory cgroup_memory=1保存后
sudo reboot。 -
启动并加入用户组
sudo systemctl enable --now docker sudo usermod -aG docker $USER newgrp docker -
验证 arm64 容器
docker run --rm arm64v8/alpine uname -a若输出 Linux <容器ID> aarch64 GNU/Linux 即成功。
-
清理与固化
docker system prune -a -f sudo apt autoremove -y最终占用 < 400 MB 磁盘空间,内存基线 < 60 MB。
拓展思考
- 如果面试官追问“如何再瘦身 50 %”:可答 静态二进制方案——直接下载官方 docker-static 发行包,用 busybox + openrc 替代 systemd,rootless 模式 运行,彻底去掉 docker-ce 的守护进程依赖,镜像体积可压到 180 MB 以内,但需自行维护更新。
- 若现场无公网:提前在 x86 主机用 docker buildx 构建 arm64v8 镜像,导出为 tar 后通过 scp 导入树莓派,体现 离线交付 能力。
- 安全加分项:主动提到为树莓派启用 dm-verity 或 overlayfs 只读层,防止 SD 卡被拔插篡改;配合 docker-secret 与 cgroups v2 限制容器 CPU 时间片 < 0.5 核、内存 < 128 MB,展示 边缘设备安全加固 思维。