自行架設 Docker 環境

之前對於 docker 和 lxc (linux container) 都有一點模糊,隨著這次在 ARM64 上架設 docker 環境,有點瞭解到其實它們都是利用 Linux Kernel 提供的 CGROUP 和 Namespace 的功能,來獨立這虛擬的程序。docker 主要是專注在單一程式的運行,而lxc則是專注在特定 Linux distribution 環境的重現,如所用的 gcc, library版本, 文件配置的方式。

Kernel 所需功能

要架設 Docker, 在 kernel 設定裡面要,尋找下面 keyword,將其功能都啟用。

  • CGROUP
  • NAMESPACE
  • DEVPTS
  • VETH
  • OVERLAY

儘量的將含有這些 keyword 的功能啟用,以避免後續的問題。由於上面是我列出實驗過程中有缺的,一些例如 BRIDGE 的功能,就沒列上來,可能要在運行時,根據WARNING訊息來加入。

取得 Docker 程式

Docker 的程式可以在這裡取得,由於都是 static ,所以稍微肥大一些。版本太新的會不能用在舊 kernel 上,所以不挑的話,從舊版本開始試。這邊以 docker-17.03.0-ce.tgz 為例,可成功在 ARM64 kernel 4.4 運行,抓下來後將之解壓縮。以下是在x86 linux 上的範例,執行下面命令

這邊假設用戶名稱是 ubuntu, 先以 root 方式安裝完後, 將 ubuntu 加入 docker group. 然後就可以運行 dockerd 了,若你不是在 RAMDISK 上運行 (一般在嵌入式系統上),前面的 DOCKER_RAMDISK=true,就不要加。因為docker會用到 overlay 的 fs, ramdisk 無此功能, 所以才要特別設定。

登出後,用一般用戶重新登入,就可以進到 docker 環境了。

若是要在 ARM64 上面運行則要先下載,匯出後,再到 target 上匯入

 

 

Leave a Reply(Name請以user_開頭,否則會被判定會垃圾息)

請輸入答案 9 + 1 =