這裡介紹如何在樹莓派中安裝與使用 Docker,下載樹莓派專用的 container 映像檔。

樹莓派是一張名片大小的開發板,適合用於各類型的物聯網(IOT)應用,連 Docker 也可以運行在上面,甚至用它來架設叢集電腦(cluster)。


以下是在樹莓派安裝最新 Docker 的步驟,以及下載樹莓派專用的 container 映像檔的教學。

安裝 Docker

若要安裝最新板的 Docker,可以使用 Docker 官方所提供的安裝指令稿,只要一行指令就可以自動安裝完成:

curl -sSL https://get.docker.com | sh

安裝完成後,最後的輸出訊息內容會類似這樣:

Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 19:06:36 2016
 OS/Arch:      linux/arm

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 19:06:36 2016
 OS/Arch:      linux/arm

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker pi

Remember that you will have to log out and back in for this to take effect!

這裡除了顯示 Docker 的版本之外,也說明了使用者帳號的設定,所有需要操作 Docker 的使用者都要加入 docker群組。

接著將 pi 這個使用者帳號加入 docker 群組:

sudo usermod -aG docker pi

搜尋 Docker Hub 上的 container 映像檔,由於樹莓派是使用 ARM 的 CPU,所以一般 x86 的 container 映像檔都不太能用,大概只能找 raspbian 相關的 container 映像檔:

docker search raspbian
NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
resin/rpi-raspbian                                     Base image for the Raspberry Pi. Contains ...   194                  
sdhibit/rpi-raspbian                                   Base raspbian image for ARM hard float boa...   44                   [OK]
mdsakalu/rpi-raspbian-ffmpeg                           Rasbian with ffmpeg compiled for the Raspb...   3                    [OK]
matthuisman/raspbian                                   Minimal Raspbian Docker Image for Raspberr...   2                    
philipz/rpi-raspbian                                                                                   2                    [OK]
jsurf/rpi-raspbian                                     raspbian jessie base image with cross buil...   2                    [OK]

這裡沒有官方製作的 container 映像檔,而 Resin.io 所製作的 container 映像檔是最多 STARS 的一個,所以我們選用這個來測試:

docker pull resin/rpi-raspbian

resin/rpi-raspbian 這個 container 中執行 hello world 程式:

docker run resin/rpi-raspbian /bin/echo 'Hello world'
Hello world

進入 container 的互動式操作環境:

docker run -ti resin/rpi-raspbian
raspberry-pi-docker-installation-tutorial-20161118-1

進入 Docker container

補充資料

在樹莓派中雖然其官方的 apt 套件庫就已經有收錄 Docker 的套件,不過由於這個套件不夠新,有些功能可能會有問題,以下是我在測試時所遇到的問題,在這裡紀錄一下。

使用 apt 安裝 Docker、設定使用者群組:

sudo apt-get install docker.io
sudo usermod -aG docker pi
docker version
Client version: 1.3.3
Client API version: 1.15
Go version (client): go1.3.2
Git commit (client): d344625
OS/Arch (client): linux/arm
Server version: 1.3.3
Server API version: 1.15
Go version (server): go1.3.2
Git commit (server): d344625

搜尋 raspbian 相關的 container:

docker search raspbian
NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
resin/rpi-raspbian                                     Base image for the Raspberry Pi. Contains ...   194                  
sdhibit/rpi-raspbian                                   Base raspbian image for ARM hard float boa...   44                   [OK]
mdsakalu/rpi-raspbian-ffmpeg                           Rasbian with ffmpeg compiled for the Raspb...   3                    [OK]
philipz/rpi-raspbian                                                                                   2                    [OK]
jsurf/rpi-raspbian                                     raspbian jessie base image with cross buil...   2                    [OK]

下載 container 映像檔時會出現一些問題:

docker pull resin/rpi-raspbian
Pulling repository resin/rpi-raspbian
2016/11/16 02:21:55 Could not reach any registry endpoint

使用 apt 安裝的 Docker 其版本是 1.3.3,根據 Docker 官方的資訊,Docker 1.5 或更舊的版本在搜尋映像檔時就會出現這個問題,也就是說現階段要下載 container 映像檔,必須安裝最新板的 Docker 才可以。

參考資料:Raspberry Pialex ellis’ blog