Docker:standard_init_linux.go:211:exec用户进程导致“ exec格式错误”

时间:2020-09-01 18:47:10

标签: 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

build / 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中,图像带有差异arch

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

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:  

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

Docker multiarch build不是问题。问题是/usr/local/bin/chaos-operator是linux / amd64二进制文件,您正在尝试在linux / arm64上运行它。