在树莓派上学习 Docker —— Part 1

1,298 阅读3分钟

以树莓派和 Docker 的火热程度相信不需要在额外介绍了,本篇的计划就是在树莓派上学会如何使用 Docker。开局只有一块树莓派3,其余全靠下载 _(:з」∠)_

树莓派官方在 2016 八月份时曾经发布一篇 DOCKER COMES TO RASPBERRY PI,宣布了 Docker 官方对树莓派的支持。 在这篇文章中有提到一个安装脚本 curl -sSL https://get.docker.com | sh 就可以安装好 Docker 了。 另外还贴出大神在 TWITTER 上 Show 由树莓派 Zero 组成的 Docker Swarm 集群。

Raspbian

一键安装脚本虽然方便,但直接 curl 远程执行脚本有安全隐患存在,手动安装也是必要的。在官方文档中,可以看到 Docker CE ARM 支持的发行版有 Debian 和 Ubuntu。

而在 Get Docker CE for Debian中可以明确的看到有对 Raspbian 的支持。

OS requirements

To install Docker CE, you need the 64-bit version of one of these Debian or Raspbian versions:

  • Stretch (stable) / Raspbian Stretch
  • Jessie 8.0 (LTS) / Raspbian Jessie
  • Wheezy 7.7 (LTS)

Docker CE is supported on both x86_64 (or amd64) and armhf architectures for Jessie and Stretch.

这里跟着文档走就可以安装好 Docker 了(以 Raspbian Stretch 为例)。

配置安装源

安装之前可以先修改 Raspbian 的安装源为国内镜像,比如科大开源镜像,具体操作可以查看科大的帮助文件。还有一个选择就是阿里开源镜像,个人来说推荐用阿里,毕竟首富家开的,还是为大学节省点经费比较好。

  1. 更新 apt 软件包索引:
$ sudo apt-get update
  1. 允许 apt 通过 HTTPS 使用镜像仓库:
$ sudo apt-get install \
     apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common
  1. 添加 Docker 的官方 GPG 密钥:
$ curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -

验证密钥 ID 是否为 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88。

$ sudo apt-key fingerprint 0EBFCD88

 pub   4096R/0EBFCD88 2017-02-22
       Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
 uid                  Docker Release (CE deb) <docker@docker.com>
 sub   4096R/F273FCD8 2017-02-22
  1. 添加 Docker CE 仓库
echo "deb [arch=armhf] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
     $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list

安装 DOCKER CE

  1. 更新 apt 软件包索引:
$ sudo apt-get update
  1. 安装最新版本的 Docker CE:
$ sudo apt-get install docker-ce
  1. 将当前用户添加到 docker 组(可选):
$ sudo usermod -aG docker $USER

这样重新登录 SSH 之后执行 docker 命令时就不需要加上 sudo 了。

  1. 增加 Docker 仓库镜像:

修改 /etc/docker/daemon.json 文件,添加上 registry-mirrors 键值。

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

修改保存之后重启 Docker 服务才能生效

$ sudo systemctl restart docker

镜像地址是由 Docker 中国官方提供的,可以在中文网站上查看一些其他关于 Docker 的资料。需要注意的是虽然有提供中文文档,大部分内容仍然是英文,而且内容还有滞后,所以还是看英文文档吧。

重启 Docker 之后,可以查看一下是否配置成功

$ sudo docker info

如果有以下信息就表示镜像配置成功:

...
Registry Mirrors:
 https://registry.docker-cn.com/
...

Hello World

最后,用容器向世界问好:

$ sudo docker run --rm hello-world

其他选择

如果使用 HypriotOS 直接下载好镜像写入 TF 卡启动树莓派就可以开始玩 Docker了。 使用 Mac 平台对 DD 命令熟悉的话直接 DD 命令写卡就行。不太熟悉的话推荐 resinOS 发布的跨平台的烧写 TF 卡软件 Etcher。Windows 平台则推荐另一款开源软件 Rufus

HypriotOS

在 Docker 官方支持树莓派之前,Hypriot 就提供了非官方支持,并且有发布专门为树莓派制作的发行版。 在blog.hypriot.com/downloads/直接下载镜像,用它来启动树莓派就可以直接使用 Docker 了。

虽然是非官方支持,不过 Hypriot 也是相当给力的,甚至可以利用树莓派搭建 K8S 集群,值得关注。

resinOS

resinOS 不仅仅是为了树莓派打造,同时也支持其他硬件,不过这里我们只需要下载树莓派镜像

可以像开源智能家居平台 Hass.io 基于 resinOS 开发的,Hass.io 的插件以 Docker 容器的方式部署运行,打造出可以开箱即用的服务器。