linux - Docker: standard_init_linux.go:211: exec 用户进程导致 "exec format error"

标签 linux docker build

我使用 buildx 命令创建了一个 docker multiarch 镜像。

sudo docker buildx build -f build/Dockerfile --platform linux/arm/v7,linux/arm64,linux/amd64 -t uditgaurav/chaos-operator:v3 . --push

构建/Dockerfile:

FROM golang:1.13 

ENV GO111MODULE=on \
    CGO_ENABLED=1 

ENV OPERATOR=/usr/local/bin/chaos-operator \
    USER_UID=1001 \
    USER_NAME=chaos-operator

# install operator binary
COPY build/_output/bin/chaos-operator ${OPERATOR}

COPY build/bin /usr/local/bin

RUN  /usr/local/bin/user_setup

RUN export GOOS=$(echo ${TARGETPLATFORM} | cut -d / -f1) && \
    export GOARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) && \
    GOARM=$(echo ${TARGETPLATFORM} | cut -d / -f3 | cut -c2-)

ENTRYPOINT ["/usr/local/bin/entrypoint"]

USER ${USER_UID}

dockerhub图像带有 diff arch :

但是当我在arm集群中运行它时,它显示错误:

standard_init_linux.go:211: exec user process caused "exec format error"

ARM集群上的Docker版本

Client:
 Version:           19.03.6
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        369ce74a3c
 Built:             Fri Feb 28 23:47:53 2020
 OS/Arch:           linux/arm64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.6
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       369ce74a3c
  Built:            Wed Feb 19 01:06:16 2020
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.3.3-0ubuntu1~18.04.2
  GitCommit:        
 runc:
  Version:          spec: 1.0.1-dev
  GitCommit:        
 docker-init:
  Version:          0.18.0
  GitCommit:  

谁能帮忙解决这个问题吗?

最佳答案

Docker 多架构构建不是问题。问题是 /usr/local/bin/chaos-operator 是一个 linux/amd64 二进制文件,而您正尝试在 linux/arm64 上运行它。

关于linux - Docker: standard_init_linux.go:211: exec 用户进程导致 "exec format error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63693708/

相关文章:

docker - 如何将另一个物理服务器或VM作为Docker集群计算机的节点加入?

python - 从已卸载的wheel生成requirements.txt

android - 如何在 android 平台上的可执行文件中使用 CallStack(在 CallStack.tpp 中)?

linux - 在 Linux 上编写 SOAP 服务 - 需要工具和帮助

未以 root 用户身份运行时出现 Android Studio 错误

linux - 无需重启即可升级 Linux 内核模块

javascript - 与 webpack/browserify 捆绑时如何排除代码路径?

c++ - 通过同时运行两个可执行文件来测量内存使用情况

docker - 卷装载时拒绝Docker权限

c++ - netbeans 项目的发布构建和调试构建