在树莓派上运行Docker

Docker

Docker是目前非常流行的代码运行容器,操作系统虚拟化,运维自动化架构和开源的解决方案。

Docker的基础是Linux容器(LXC)技术,相比传统的VM虚拟化技术, LXC更轻量,性能更好。

Docker采用Golang语言开发,在LXC基础上Docker进行了封装,简化了容器的管理。

Docker还提供了一个标准(Dockerile)来实现软件部署环境代码化,全球的开发和运维工程师可以通过官方的Docker Hub仓库分享自己创建的镜像,使用者则可以快速的把系统和应用部署到自己的环境。

树莓派二代

树莓派二代的CPU有4核,运行速度是第一代的6倍,通过Docker快速部署开发环境,开发应用,再把开发好的系统通过镜像分享和发布出去也是非常有意义的事。因为树莓派的官方操作系统Raspbian并不支持Docker,本文主要介绍下如何在树莓派二代上运行Docker的几种方法。

Arch Linux ARM

Arch Linux ARM 是由开源社区维护专为ARMv6(如树莓派一代)和 ARMv7(如树莓派二代, pcDuino3)等嵌入式硬件提供内核及软件支持的Linux发行版本。

在树莓派上安装Arch Linux和Raspbian略有不同,详细步骤可以看参考链接4。 总得来说是你需要在SD卡上分两个区并格式化,一个是FAT 32(LBA)格式的引导分区(/boot),另一个是系统根分区(/root)。然后把下载下来的文件解开来复制到这两个分区就可以了。

你也可以只在SD卡上放/boot分区(这样可以用较小的如1G的SD卡引导树莓派),在U盘上放根分区,通过USB扩展存储可以允许你存放很多的镜像文件。

安装好Arch Linux后,参考这篇文章做完基础设置。

安装docker

pacman -S docker

目前安装好的版本是1.5

开机自动docker

systemctl enable docker

把登录用户加到docker组

这样不需要root也能执行docker了

gpasswd -a <your_login> docker

执行docker

Docker Hub上搜索rpi已经可以找到不少适合Raspberry Pi运行的镜像了,热心网友都是棒棒哒。

[hugo@alarmpi ~]$ docker -v      
Docker version 1.5.0, build a8a31e

[hugo@alarmpi ~]$ docker search rpi
NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
resin/rpi-raspbian            Base image for the Raspberry Pi. Contains ...   55                   
sdhibit/rpi-raspbian          Base Raspbian image for ARMv6 boards. Imag...   9                    [OK]
hypriot/rpi-node              RPi-compatible Docker Image with Node.js        8                    
yyolk/rpi-archlinuxarm        Arch Linux Arm base image, built daily w/ ...   7                    
hypriot/rpi-iojs              RPi-compatible Docker Image with io.js          7                    
hypriot/rpi-python            RPi-compatible Docker Image with Python         6                    
hypriot/rpi-java              RPi-compatible Docker Image with Java           5                    
hypriot/rpi-crate             RPi-compatible Docker Image with Crate.io       3                    
akkerman/rpi-nginx            rpi build of nginx                              3                    
jprjr/distcc-rpi                                                              3                    [OK]
resin/rpi-node                Node.js is a JavaScript-based platform for...   1                    
ontouchstart/rpi-ruby         ontouchstart/rpi-ruby                           0                    
ontouchstart/rpi-base         ontouchstart/rpi-base                           0                    
ontouchstart/rpi-redis        ontouchstart/rpi-redis                          0                    
ontouchstart/rpi-go           ontouchstart/rpi-go                             0                    
philipz/rpi-raspbian                                                          0                    [OK]
maiome/rpi-kernel-build       A simple container that makes rebuilding a...   0                    [OK]
dcarley/golang-rpi                                                            0                    [OK]
philipz/rpi-hub-test                                                          0                    [OK]
rpietzsch/paperwork                                                           0                    [OK]
rpietzsch/facete2-docker                                                      0                    [OK]
jakobwesthoff/rpi-cc                                                          0                    [OK]
danielfrg/rpi2xc                                                              0                    [OK]
rpietzsch/bww-personensuche                                                   0                    [OK]
randyp/rpi-archlinuxarm       Adding extra to yyolk/rpi-archlinuxarm...       0                    

HypriotOS

如果你不习惯Arch Linux或者想用docker 1.6,下面这个方法是你的菜:

按照 http://blog.hypriot.com/post/hypriotos-back-again-with-docker-on-arm/ 教程安装就好了。

Resin.io

这是一家研究在树莓派上运行和分发应用较早的公司。

这里有详细的教程 : http://docs.resin.io/#/pages/installing/gettingStarted.md

参考链接

  1. http://dockerpool.com/static/books/docker_practice/introduction/what.html
  2. https://resin.io/blog/docker-on-raspberry-pi/
  3. http://blog.hypriot.com/post/hypriotos-back-again-with-docker-on-arm/
  4. http://archlinuxarm.org/platforms/armv7/broadcom/raspberry-pi-2

See also