[英]Docker buildx with node app on Apple M1 Silicon - standard_init_linux.go:211: exec user process caused "exec format error
[英]docker buildx “exec user process caused: exec format error”
我正在嘗試交叉編譯 rust 應用程序以在我的樹莓派集群上運行。 我看到來自 docker 的 buildx 應該能夠實現這一點。 我現在有一個最小的dockerfile,如下:
FROM rust
RUN apt-get update
ENTRYPOINT ["echo", "hello world"]
我嘗試通過運行以下命令來編譯它: docker buildx build --platform=linux/arm/v7 some/repo:tag.
當我這樣做時,我收到以下錯誤:
[+] Building 0.9s (5/5) FINISHED
=> [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 102B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/rust:latest 0.7s => CACHED [1/2] FROM docker.io/library/rust@sha256:65e254fff15478af71d342706b1e73b26fd883f3432813c129665a97a74e2278
0.0s => ERROR [2/2] RUN apt-get update 0.2s
------
> [2/2] RUN apt-get update:
#5 0.191 standard_init_linux.go:219: exec user process caused: exec format error
------ error: failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c apt-get update]: exit code: 1
我覺得我在這里遺漏了一些非常基本的東西,希望有人告訴我為什么這么簡單的東西對我不起作用。
我在 Ubuntu 操作系統上運行 docker 版本 20.10.1
提前致謝!
output 的docker buildx inspect --bootstrap
:
Name: default
Driver: docker
Nodes:
Name: default
Endpoint: default
Status: running
Platforms: linux/amd64, linux/386
output 的ls -l /proc/sys/fs/binfmt_misc/
:
total 0
--w------- 1 root root 0 Dec 19 07:29 register
-rw-r--r-- 1 root root 0 Dec 19 07:29 status
交叉編譯需要qemu-user-static
和infmt-support
。
$ sudo apt install -y qemu-user-static binfmt-support
qemu-user-static
用於 QEMU 的用戶模式仿真,而binfmt_misc
用於在讀取其他可執行二進制文件時切換到 QEMU。 然后,告訴 docker 使用它們。
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
您必須害怕以特權運行未知圖像,但內容是安全的。 接下來,在 docker 中創建一個用戶用於構建鏡像。
$ docker buildx create --name sofia # name as you like
$ docker buildx use sofia
$ docker buildx inspect --bootstrap
如果成功, buildkit
將被拉取:
[+] Building 9.4s (1/1) FINISHED
=> [internal] booting buildkit 9.4s
=> => pulling image moby/buildkit:buildx-stable-1 8.7s
=> => creating container buildx_buildkit_sofia0 0.7s
Name: sofia
Driver: docker-container
Nodes:
Name: sofia0
Endpoint: unix:///var/run/docker.sock
Status: running
Platforms: linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
可用目標擴大!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.