如何在 Raspberry Pi 上安裝 Docker CE

by 6月 01, 2017 0 意見            

在 Dockercon 2017 上,Docker 官方公佈了與開源版本 Moby 不同的社群版,名為 Docker CE (Community Edition),在 Rapsberry Pi 上的安裝方式跟以往有沒有不同呢?!

事前準備


安裝 Docker CE


在 Docker 正式支援 Raspbian 之前,我們有幾種選擇:
  1. 別用 Raspbian,直接用 hypriot
    我是認真的,這是當初最好的選擇,OS 搞定了,Docker 也搞定了,良葛格就是選擇這個方式
  2. 用 Arch Linux 從頭裝。
    有些朋友不喜歡別人打包好的 Distro,怕別人會在裡面加料,就選擇 自己來搞定 囉。
  3. 當然也會有神人下載 source code 來 compile
而我們這次實作是依照 Raspberry Pi 官網 Docker comes to Raspberry Pi 的步驟來操作。

如果對這個懶人安裝法不放心,覺得自己來按步就班來比較好的話,可以參考 Docker 官網 Get Docker for Debian 的指令來執行 。

不過,千萬別把這兩種方法混著執行,我們用的只是個有著「工人智慧」的 Raspbian,可不像那個「人工智慧」的 AlphaGo,系統很可能會 crash 掉 ...... XD。

想安裝 Docker CE 穩定版,就只要這行指令。
curl -sSL https://get.docker.com/ | sh


如果有勇者想挑戰一下人品的話:
  • 測試版請服用 curl -fsSL https://test.docker.com/ | sh
  • 實驗版請服務 curl -fsSL https://experimental.docker.com/ | sh

讓 pi 帳號可以直接操作 docker,別老是用 sudo 或 root 來跑,避免發生 Docker daemon attack surface 問題。
sudo usermod -aG docker pi

重新啟動服務,並設定成開機後自動執行。
sudo systemctl restart docker
sudo systemctl enable docker

跑一下 Docker for ARM 的 Hello World 來測試一下是否正常。
docker run hypriot/armhf-hello-world

最後,重新開機後就完成了。
sudo reboot


ARM 版本的容器哪裡找?


先驗明正身,真的是在 Raspbian Jessie 上面跑 Docker CE。

由於 Raspberry Pi 是 ARM base CPU,在 Docker Hub 上面很多 Linux Container 都不能跑,因為它們是 for x86_64 CPU 的。

如果我們硬是要在 ARM 的設備跑 x86_64 的容器,只會出現 exec user process caused "exec format error" 這樣子的錯誤訊息,而不會有任何結果。

除了自己的容器自己包之外,我們當然也可以在 Docker Hub 上面找到很多 for ARM 的容器,這幾個算是還不錯的選擇 :

異常處理


本來以為這篇教學沒幾行指令,應該很好寫,沒想到居然因為安裝過程的問題卡了一整天,錯誤訊息是「invoke-rc.d: initscript docker, action "start" failed.」。

Docker Engine 安裝失敗,所以服務也起不來。

拜了好久的谷歌大神,終於找到 Ubuntu 14.04 apt-get install docker-engine fails 這篇文,沒想到解決居然是把這兩行取消註解,再重新開機就行了 ...... (崩潰)。
sudo vi /etc/login.defs
SYS_GID_MIN 100
SYS_GID_MAX 999


參考資料

圖片來源
  • Docker 官網
  • Raspberry Pi 官網

更新紀錄
  • 2017/06/01 發文。

Heracles Jam,江湖人稱「海公公」

IT 技術家 - 創站部落客

一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
現職 MIS / 業界講師 / 資訊顧問 / 部落客

0 意見 :

張貼留言