這裡介紹如何在樹莓派中安裝與使用 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
補充資料
在樹莓派中雖然其官方的 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 Pi、alex ellis’ blog