1、報(bào)錯(cuò)
使用Dockerfile自己做的服務(wù)鏡像,docker run時(shí)啟動(dòng)失敗,報(bào)錯(cuò)如下:
standard init linux.go:228 exec user process caused: exec format error
2、原因一
當(dāng)前服務(wù)器的CPU架構(gòu)和構(gòu)建鏡像時(shí)的CPU架構(gòu)不兼容。比如做鏡像是在arm機(jī)器下構(gòu)建的,而docker run是在amd架構(gòu)下執(zhí)行的。排查:
# 鏡像信息
docker inspect 鏡像ID |grep -i Arch
查看當(dāng)前服務(wù)器的CPU架構(gòu)信息:
# Linux信息
uname -a
# 或
lscpu
此時(shí),可通過docker buildx插件模擬多CPU架構(gòu),構(gòu)建出你需要的鏡像,從而解決這個(gè)問題。
2、原因二
要是前面的這個(gè)問題,那倒是明晰,坑就在你明明用docker buildx構(gòu)建的,查看兩個(gè)架構(gòu)信息也沒毛病,但還是報(bào)這個(gè)錯(cuò)。
此時(shí),考慮你Dockfile里的基礎(chǔ)鏡像,它的架構(gòu)也要對(duì)應(yīng)上。不能做amd下的鏡像,但基礎(chǔ)鏡像卻是arm下的。比如我之前使用JDK的鏡像,Dockerfile共用一個(gè),開頭都是:
FROM openjdk:11.0.4
這個(gè)坑得處理掉,可以通過–platform參數(shù)來完成指定架構(gòu)鏡像的拉?。?/p>
docker pull --platform linux/arm64 openjdk:11.0.4
docker pull --platform linux/amd64 openjdk:11.0.4
后面我是通過CICD平臺(tái)的,對(duì)應(yīng)的打包腳本也就變成了:
文章來源:http://www.zghlxwxcb.cn/news/detail-780652.html
問題解決!文章來源地址http://www.zghlxwxcb.cn/news/detail-780652.html
到了這里,關(guān)于docker報(bào)錯(cuò)standard init linux.go:228 exec user process caused: exec format error的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!