如何在x86機器上構(gòu)建arm/openpower多架構(gòu)容器鏡像

? ? ? ? Docker Image是容器運行的基礎(chǔ)睦袖,它是依賴于操作系統(tǒng)的芜繁。不同CPU架構(gòu)的Docker Image需要在相應(yīng)CPU架構(gòu)的機器上去構(gòu)建旺隙,這樣在一定程度上加大了開發(fā)的復雜度,那么有沒有辦法能夠在x86機器上模擬其他架構(gòu)CPU的指令來構(gòu)建Docker Image呢骏令?我們可以使用qemu-user-static.

? ? ? ? qemu-user-static蔬捷,是 QEMU 虛擬機的用戶態(tài)實現(xiàn)。它可以直接在 amd64 系統(tǒng)上運行 OpenPOWER榔袋、ARM周拐、MIPS 等架構(gòu)的 Linux 程序,將指令動態(tài)翻譯成 x86 指令.這樣 不同CPU架構(gòu)的 系統(tǒng)環(huán)境中的進程與主系統(tǒng)的進程一一對應(yīng)摘昌,資源分配靈活速妖,并且易于腳本自動化。需要注意的就是聪黎,當 OpenPOWER罕容、 ARM、MIPS 等架構(gòu)的進程嘗試運行其它進程時稿饰,qemu-user-static 并不會接管新建的進程锦秒。如果新的進程仍然是 ARM 架構(gòu),那么 Linux 內(nèi)核就無法運行它喉镰。因此旅择,需要開啟 Linux 內(nèi)核的 binfmt 功能,該功能可以讓 Linux 內(nèi)核在檢測到OpenPOWER侣姆、 ARM生真、MIPS 等架構(gòu)的程序時沉噩,自動調(diào)用 qemu-user-static。開啟該功能柱蟀,并且注冊 qemu-user-static 虛擬機后川蒙,運行 OpenPOWER程序就和運行 x86 程序一樣,對用戶來說毫無差別长已。 我們可以在x86機器上構(gòu)建其他CPU架構(gòu)的鏡像的時候畜眨,在Dockerfile里分別加入相應(yīng)架構(gòu) qemu-__QEMU_ARCH__-static 這種文件 ,比如我們創(chuàng)建OpenPOWER的ppc64le的鏡像的時候术瓮,我們可以運行COPY qemu-ppc64le-static這個文件康聂。

? ? ? ? 我們介紹一個工具可以在x86機器上創(chuàng)建多架構(gòu)容器鏡像,工具下載地址https://github.com/HaoHHCui/docker-multiarch-builder

下面我們就演示一個在x86機器上同時創(chuàng)建x86和OpenPOWER的ppc64le架構(gòu)的docker image胞四。

1? 下載工具恬汁,然后運行

$ sudo ./run-once.sh

2? 創(chuàng)建工程

$ mkdir /usr/src/my-new-docker-project

$ ./init-repo.sh /usr/src/my-new-docker-project

3 進入工程 配置build.config文件

cd /usr/src/my-new-docker-project

build.config配置示例:

REPO="haocui"?

IMAGE_NAME="myapp"

IMAGE_VERSION="latest"

DOCKER_CLI_PATH="/usr/src/docker-mutiarch-builder/cli/build"

TARGET_ARCHES="amd64 ppc64le"

4 運行build.sh腳本

運行腳本以后,工具自動會創(chuàng)建haocui/myapp:ppc64le-latest和haocui/myapp:amd64-latest兩個鏡像撬讽,然后會創(chuàng)建一個manifests list 叫haocui/myapp:latest并提交到我們指定的鏡像庫中蕊连。

5 我們在不同架構(gòu)的CPU機器上只要運行docker pull haocui/myapp:latest ,自動會下載到對應(yīng)的x86或者ppc64le的鏡像游昼。用戶感覺不到CPU架構(gòu)的差異.

6驗證

在x86和openpower機器上分別運行docker run? haocui/myapp:latest? arch

openpower機器返回ppc64le,x86機器返回x86_64

參考 https://lobradov.github.io/Building-docker-multiarch-images/#same-dockerfile-template

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市尝蠕,隨后出現(xiàn)的幾起案子烘豌,更是在濱河造成了極大的恐慌,老刑警劉巖看彼,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廊佩,死亡現(xiàn)場離奇詭異,居然都是意外死亡靖榕,警方通過查閱死者的電腦和手機标锄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茁计,“玉大人料皇,你說我怎么就攤上這事⌒茄梗” “怎么了践剂?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長娜膘。 經(jīng)常有香客問我逊脯,道長,這世上最難降的妖魔是什么竣贪? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任军洼,我火速辦了婚禮巩螃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匕争。我一直安慰自己避乏,他們只是感情好,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布汗捡。 她就那樣靜靜地躺著淑际,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扇住。 梳的紋絲不亂的頭發(fā)上春缕,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音艘蹋,去河邊找鬼锄贼。 笑死,一個胖子當著我的面吹牛女阀,可吹牛的內(nèi)容都是我干的宅荤。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼浸策,長吁一口氣:“原來是場噩夢啊……” “哼冯键!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起庸汗,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤惫确,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蚯舱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體改化,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年枉昏,在試婚紗的時候發(fā)現(xiàn)自己被綠了陈肛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡兄裂,死狀恐怖句旱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情懦窘,我是刑警寧澤前翎,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站畅涂,受9級特大地震影響港华,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜午衰,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一立宜、第九天 我趴在偏房一處隱蔽的房頂上張望冒萄。 院中可真熱鬧,春花似錦橙数、人聲如沸尊流。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崖技。三九已至,卻和暖如春钟哥,著一層夾襖步出監(jiān)牢的瞬間迎献,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工腻贰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吁恍,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓播演,卻偏偏與公主長得像冀瓦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子写烤,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容