鍍金池/ 問答/Linux  網(wǎng)絡(luò)安全/ 如何在centos上通過docker運行樹莓派程序?

如何在centos上通過docker運行樹莓派程序?

我現(xiàn)在有些樹莓派程序,但是希望在真機使用的時候,先在centos中跑一下測試,想到了Docker。我理解docker就像一個小型的操作系統(tǒng),代碼可以借著這個殼子來跑。我的理解是否有偏頗?如果沒有,大概要怎么去做呢?

回答
編輯回答
伐木累

在做你所述以上事情之前需要明確一點,那就是CPU架構(gòu)問題。
PC系統(tǒng)和嵌入式系統(tǒng)的CPU架構(gòu)不同,你可能需要了解:i386、x86_64、arm32、arm64、armv7、armv8(aarch32、aarch64)等cpu架構(gòu)的區(qū)別

很明顯,樹莓派屬于嵌入式系統(tǒng),使用的是arm架構(gòu),樹莓派3以上(包含3b和3b+)可支持64位cpu,也就是采用的是armv8架構(gòu),armv8支持兩種屬性,即:aarch32、aarch64,通俗的說就是最新發(fā)行的樹莓派已經(jīng)可以支持64位,而以往的版本僅支持32位

如果你的Docker是裝在PC上的或者是PC上的虛擬機里的(比如vm虛擬機之類的)那么Docker所使用的硬件是與宿主機共享硬件核心,所以,宿主機的硬件核心決定了docker的核心,換句話說就是docker并非虛擬機,并不能虛擬出一套與宿主機不同cpu架構(gòu)的硬件,即便是vm虛擬機,也是不能運行arm版本的操作系統(tǒng)的

在樹莓派中可以安裝centos系統(tǒng),并且centos官方有img鏡像,但僅是32位的。
在樹莓派中運行的centos系統(tǒng)一樣可以安裝Docker,值得注意的是Docker官方的文檔中指出:不建議嵌套Docker,也就是在Docker中創(chuàng)建一個centos鏡像容器,然后在此容器中又安裝一個Docker,雖然支持但不建議這樣做。

想要實現(xiàn)如你所述的測試環(huán)境,可以參考以下做法:
1、使用和樹莓派同樣cpu架構(gòu)的真機,也就是arm架構(gòu)的真實測試機器
2、使用qemu虛擬機,qemu是一個軟件模擬環(huán)境,可以模擬運行arm架構(gòu)的操作系統(tǒng),不過據(jù)說性能堪憂
3、使用交叉編譯環(huán)境,也就是讓pc上的Linux具有編譯不同cpu架構(gòu)程序的能力,程序經(jīng)過交叉編譯后即可移植到arm架構(gòu)的機器上去

以上所述如有偏頗或不同方案,希望不吝賜教。

2017年3月11日 08:56