4 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
順便說一句,如果它對(duì)其他登陸這里的人有幫助,我在 M1 Max MacBook Pro 筆記本電腦上也遇到了同樣的問題,試圖docker build
從公司回購中做一個(gè)應(yīng)該是一條很好的路徑,但我可能是唯一的一個(gè)(它是一家擁有 ARM64 M1“Apple Silicon”Mac 的小公司。但是我發(fā)現(xiàn)我的情況的解決方案(嗯,一個(gè)解決方案)與 OP 的解決方案完全相反,那就是添加 --platform=linux/amd64
到 docker 文件的 FROM 行。
否則,它會(huì)使用 ARM64 映像開始,而我并不聰明,但后來在 Dockerfile 中,構(gòu)建嘗試安裝和執(zhí)行為 x86_64 編譯的代碼。通過請(qǐng)求基本映像開始構(gòu)建過程linux/amd64
,然后基本映像具有/lib64/ld-linux-x86-64.so.2
. 這可能意味著一切都在 ARM64 CPU 上被模擬為 x86_64 qemu-x86_64
,因此如果您可以選擇從 ARM64 映像開始,并且可以在構(gòu)建期間在容器內(nèi)編譯任何您無法安裝為 ARM64 二進(jìn)制文件的軟件,它會(huì)當(dāng)您稍后在基于 M1 的 Mac 上運(yùn)行容器時(shí),可能會(huì)更快。對(duì)于這種情況,我還不能自己嘗試。

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
這解決了我的問題。
FROM ubuntu:focal
RUN apt update; apt install -y curl jq build-essential python3.8 python3-pip docker-compose jsonnet bison mercurial
RUN ln -s /usr/bin/python3.8 /usr/bin/python
RUN curl -OL https://golang.org/dl/go1.17.linux-arm64.tar.gz; mkdir /etc/golang; tar -xvzf go1.17.linux-arm64.tar.gz -C /etc/golang; ln -s /etc/golang/go/bin/go /usr/bin/go; rm -f go1.17.linux-arm64.tar.gz
RUN GO111MODULE="on" go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest; ln -s /root/go/bin/jb /usr/bin/jb
WORKDIR /workspace

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
將以下標(biāo)志傳遞給 C 預(yù)處理器CPPFLAGS
解決了我的 M1 中的類似問題
-DPNG_ARM_NEON_OPT=0
將值作為帶有密鑰的 env var 傳遞CPPFLAGS
給相關(guān)服務(wù)。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
修改Dockerfile
似乎是最流行的答案,但您也可以將DOCKER_DEFAULT_PLATFORM
環(huán)境變量設(shè)置為linux/amd64
.
export DOCKER_DEFAULT_PLATFORM=linux/amd64
原因似乎在于 AArch64 圖像。
- 4 回答
- 0 關(guān)注
- 2590 瀏覽
添加回答
舉報(bào)