2015-12-01 46 views
3

最近有一個項目拋出我的方式,涉及到幾個(Linux能力)嵌入式設備的編排,向他們部署軟件,並允許在git倉庫中更新代碼庫時更新應用程序。嵌入式系統上的Docker,爲什麼不呢?

最初的想法是爲每個設備製作一個標準的圖像,並且我着手嘗試將Docker安裝在UDOO Quad和Intel Edison上啓動,但是沒有任何成功。

我的想法是,在嵌入式設備上安裝Docker似乎是個好主意 - 但如果是這樣的話,那麼現在它肯定已經移植了。似乎正在做這些努力的唯一一組是Resin.io。

有沒有我缺少的東西,還是有明確的理由爲什麼Docker在嵌入式設備上沒有意義?如果沒有理由,並且它確實在嵌入式系統上運行Docker是否有意義,那麼我是否忽略了一些內容:有沒有關於移植的討論的任何來源,或者如何解決這個問題?

+0

他的經驗,你有沒有找到合適的答案,這一個偉大的文章?我很好奇自己。 – destenson

+0

我沒有找到關於爲什麼docker不支持嵌入式設備的答案,但我確實發現最新的vanilla內核對docker有更多的內置支持。由於在這方面正在做出努力,Arch Linux ARM發行版可能是安裝Docker的最簡單途徑,因爲Arch的目標是更具優勢。然後,您只需要在ARM架構上運行的圖像。儘管docker hub上只有x86規則,但你可以通過幾個簡單的搜索來找到一些「Ubuntu arm」之類的東西。 – Bobby

回答

0

通常嵌入式系統的變化率非常低。 Docker在最低版本上運行良好,然後在頂層進行分層。如果你想犧牲在一個最小的嵌入式系統上運行docker的開銷,以便docker具有一個構建系統和穩定的變化率,那麼你可以探索它。

+0

緩慢的變化速度正是我們想要避免的,而構建在頂端的Docker的最小構建正是我們想要實現的 - 在那個方向看起來似乎沒有明確的路徑。在這種環境下,資源對我們來說很便宜,特別是當任務很簡單時,它可以委託給一個簡單的控制器,所以開銷甚至不是問題。 – Bobby

5

我曾考慮在嵌入式設備(mips系統)上運行docker,但沒有這樣做。在我的拙見中有一些問題:

  1. Docker在Golang中實現。目前沒有可供mips編譯的工具鏈。您將需要使用gcc-go自己創建工具鏈。

  2. 碼頭大小大於lxc。在臺式電腦中,這不是問題,但嵌入式設備的閃存存儲有限。

  3. Docker使用了一些相當先進的linux內核特性。有時嵌入式設備上的內核版本不是那麼新,需要後端才能使其工作。

  4. 碼頭圖像必須與運行時環境構建在相同的體系結構上。這意味着如果您想在Raspberry Pi上運行Docker容器,Docker鏡像必須建立在ARM架構系統上。 QEMU可用於在雲中構建Docker鏡像,但它不支持嵌入式系統中使用的所有CPU體系結構。 (例如,它目前不支持MIPS)

最後,選擇lxc作爲在嵌入式設備上運行容器的特定任務。與碼頭相比,它的功能有限,但目前它符合項目的要求。