树莓派 Zero 上安装 Docker

本文介绍在树莓派 Zero 上安装 Docker 的步骤。

本文使用的系统:

  • 树莓派安装的系统是 Raspbian Stretch Lite (当前最新的是 Buster,但没有可用的 Docker 安装包)
  • 使用电脑,MacBook Pro/macOS
  • 将安装:
    • docker
    • docker-compose

在树莓派 Zero Raspbian Buster 的失败经历#

在树莓派 Zero / Raspbian Buster 下,如果按照这样的方式安装:

  • 下载安装脚本:curl -fsSL get.docker.com -o get-docker.sh
  • 执行脚本:sudo sh get-docker.sh

安装到最后,会出现:

1
E: Sub-process /usr/bin/dpkg returned an error code (1)

其实是因为,Debian 在 Buster 版本,不再为树莓派构建基于 ARM 架构的安装包了。

这样安装后,是可以docker -v的,但是在执行比如docker ps -a的时候,会有类似这样的报错:

1
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

docker 服务根本没有启动。

Raspbian Stretch Lite 成功安装的步骤#

参考:How to setup Homebridge & Docker on a Raspberry Pi

成功在树莓派 Zero / Raspbian Stretch 安装 docker 和 docker-compose.

安装 docker#

首先还是要下载官方安装脚本:

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

然后让脚本可执行:

1
chmod u+x get-docker.sh

运行安装脚本,通过环境变量限制安装的 docker 版本:

1
sudo VERSION=18.06 ./get-docker.sh

完成之后,将pi用户加入到 docker 组中:

1
sudo usermod -aG docker pi

重新登录,使之生效。

测试 docker 是否可用:

1
docker ps -a

安装 docker-compose#

安装命令:

1
sudo apt-get -y install python-setuptools && sudo easy_install pip  && sudo pip install docker-compose~=1.23.0

设想的应用场景#

zero 安装 docker,希望能

  • 很容易的将复杂环境应用一次性的部署到 zero 系统里来

    • 目前看可能不太容易
      • 因为在 x86 架构下 build 和发布的 docker 库,不能直接在 arm 架构的树莓派下使用
      • 需要在树莓派环境下 build,然后 push 到 docker hub 单独的针对树莓派的库
      • 在树莓派环境下 build 很慢,尤其是 zero
    • 以后也许能成为可能
  • 升级很方便

    • 使用 docker multi-stage builds 可以加快升级?
    • 下一步会尝试这个功能
    • 这个功能是从 Docker 17.05 开始支持的