首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker buildx "exec用户进程引起的: exec格式错误“

docker buildx "exec用户进程引起的: exec格式错误“
EN

Stack Overflow用户
提问于 2020-12-19 01:20:43
回答 1查看 5.2K关注 0票数 11

我正在尝试交叉编译一个锈蚀应用程序来运行我的覆盆子pi集群。我看到码头的大楼应该能让这一切成为可能。我现在有一个最小的dockerfile文件,如下所示:

代码语言:javascript
复制
FROM rust
RUN apt-get update
ENTRYPOINT ["echo", "hello world"]

我试图通过运行以下命令来编译它:docker buildx build --platform=linux/arm/v7 some/repo:tag .

当我这样做时,我会得到以下错误:

代码语言:javascript
复制
[+] 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

提前感谢!

docker buildx inspect --bootstrap输出

代码语言:javascript
复制
Name:   default
Driver: docker

Nodes:
Name:      default
Endpoint:  default
Status:    running
Platforms: linux/amd64, linux/386

ls -l /proc/sys/fs/binfmt_misc/输出

代码语言:javascript
复制
total 0
--w------- 1 root root 0 Dec 19 07:29 register
-rw-r--r-- 1 root root 0 Dec 19 07:29 status
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-19 15:50:33

交叉编译需要qemu-user-staticinfmt-support

代码语言:javascript
复制
$ sudo apt install -y qemu-user-static binfmt-support

qemu-user-static用于QEMU的用户模式仿真,binfmt_misc用于读取其他可执行二进制文件时切换到QEMU。然后,告诉码头工人使用它们。

代码语言:javascript
复制
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

您必须害怕以特权身份运行未知映像,但要运行内容是安全的。接下来,在坞中创建一个用户来生成图像。

代码语言:javascript
复制
$ docker buildx create --name sofia # name as you like
$ docker buildx use sofia
$ docker buildx inspect --bootstrap

如果你成功了,buildkit就会被拉出来:

代码语言:javascript
复制
[+] 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

可用目标扩大!

参考资料:用Artur Klauser连媒体用Buildx创建多建筑码头图像

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65365797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档