Docker: standard_init_linux.go: 211: Der Exec-Benutzerprozess hat einen "Exec-Formatfehler" verursacht.

Sep 02 2020

Ich habe ein Docker-Multiarch-Image mit dem Befehl buildx erstellt.

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}

In Dockerhub kamen die Bilder mit Diff Arch :

Aber wenn ich es in Armclustern ausgeführt habe, wird ein Fehler angezeigt:

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

Docker-Version im ARM-Cluster

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:  

kann jemand dabei helfen?

Antworten

2 KonradBotor Sep 02 2020 at 04:05

Docker Multiarch Build ist nicht das Problem. Das Problem ist, dass /usr/local/bin/chaos-operatores sich um eine Linux / AMD64-Binärdatei handelt und Sie versuchen, sie unter Linux / Arm64 auszuführen.