使用Docker buildx構(gòu)建跨CPU架構(gòu)的鏡像體驗

因為公司一個項目甲方是國企挣饥,要用arm64架構(gòu)的CPU除师,但國企效率又很低,遲遲不提供測試機器扔枫,又讓研究技術(shù)可行性汛聚。我們公司又只有X64架構(gòu)CPU的電腦,網(wǎng)上查到docker buildx插件可以構(gòu)建跨操作系統(tǒng)和CPU的鏡像短荐,就來研究一下倚舀,用的是ubuntu系統(tǒng)。

一忍宋、先安裝docker

#查看是否已經(jīng)安裝 ,19.03+的版本才支持buildx插件
docker -v 或docker version  

#如果已經(jīng)有安裝痕貌,且版本過低的話,要先卸載:
apt remove docker docker-engine docker.io containerd runc

#安裝docker糠排,注意不要用docker-ce舵稠,版本太低。docker.io才是ubuntu維護的版本入宦;安裝過程中如果下載不成功導致失敗哺徊,可以多執(zhí)行幾次
apt install docker.io

#檢查docker是否安裝好
docker version  
whereis docker #查看安裝位置

二、Docker 鏡像加速

直接從dockerHub下載鏡像會很慢乾闰,可以配置加速
阿里云鏡像獲取地址: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 自己去注冊一個落追。然后通過修改daemon配置文件/etc/docker/daemon.json來使用加速器。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://knb2n3ux.mirror.aliyuncs.com"],
"experimental": true
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三涯肩、安裝Buildx

docker buildx 插件實現(xiàn)多平臺編譯淋硝,需要Docker 19.03+的版本。 下載buildx https://github.com/docker/buildx/releases/tag/v0.5.1 如果CPU為intel或AMD 則下載buildx-v0.5.1.linux-amd64, 下載后改名為buildx宽菜,然后執(zhí)行下面的腳本安裝谣膳。

mkdir -p ~/.docker/cli-plugins
mv buildx ~/.docker/cli-plugins/docker-buildx
cd ~/.docker/cli-plugins/
chmod +x docker-buildx 
docker buildx --help #檢查是否安裝成功,查看命令幫助

#  https://github.com/multiarch/qemu-user-static/releases/download/
#  安裝qemu铅乡,下載相應(yīng)的版本 qemu-$(uname -m)-static
chmod +x qemu-x86_64-static
mv qemu-x86_64-static /usr/local/bin/qemu-x86_64-static

四继谚、使用Buildx構(gòu)建測試

事先準備好用spring boot開發(fā)的測試jar包,和Dockfile文件阵幸,復(fù)制到同一個目錄下花履,然后執(zhí)行下面的腳本:

# 先創(chuàng)建構(gòu)造器并作為當前構(gòu)造器
docker buildx create --use --platform=linux/amd64,linux/arm64 --name localbuilder
# 構(gòu)建跨平臺的鏡像
docker buildx build --platform=linux/amd64,linux/arm64 -t elwin-test  .
#查看本機鏡像
docker images

發(fā)現(xiàn)并沒有生成鏡像芽世,后來看了官方幫助,如果使用了--platform參數(shù)是不能直接生成鏡像的诡壁,只可以發(fā)布的dockerHub或者導出本地tar包济瓢。
先看發(fā)布到dockerHub,需要在https://hub.docker.com/ 注冊賬號,然后創(chuàng)建一個倉庫妹卿。

docker login #登錄到dockerHub
#注意-t的后面的標簽格式:用戶名/倉庫名:版本號
docker buildx build --platform=linux/amd64,linux/arm64 -t elwin942/test:v1 --push .

由于網(wǎng)速的原因旺矾,嘗試好多次才上傳成功,可以看到同時生成兩個不同架構(gòu)的鏡像了夺克。但是沒有arm64的系統(tǒng)箕宙,也不能下載arm64的鏡像。下載了amd64的鏡像執(zhí)行會出錯铺纽,但之前不用buildx構(gòu)建的鏡像又可以正常執(zhí)行柬帕。
嘗試構(gòu)建輸出為本地tar包再導入為鏡像:

# 構(gòu)建, 輸出到本地tar文件
docker buildx build --platform=linux/amd64,linux/arm64 -t elwin-test -o -  >test.tar .

# 導入鏡像
cat test.tar  | docker import --platform=linux/amd64 - elwin-test
# 查看鏡像,導成功
docker images 
# 運行鏡像
docker run -d -p 8888:8888 elwin-test
# 查看容器
docker ps -a

還是會報錯:
docker: Error response from daemon: No command specified.
或者
docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec : "java": executable file not found in $PATH: unknown.



網(wǎng)上搜索了幾天狡门,嘗試各種方法都解決不了陷寝,于是放棄了。

總結(jié)

buildx 最近一個版本是發(fā)布于2020年12月15日的v0.5.1版本其馏,還沒到1.0版本盼铁,可能還不是很成熟〕①耍或者機器環(huán)境的問題構(gòu)建的鏡像不能成功運行,因為時間的原因我嘗試了用Qemu虛擬出arm64的系統(tǒng)鹏控,最后成功完成任務(wù)致扯。如果遇到和我同樣的問題并且解決的話也歡迎告知!

?著作權(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)容