[Fixed]-standard_init_linux.go:178: exec user process caused "exec format error"


I'm running Docker and encountering an exception: "standard_init_linux.go:178: exec user process caused 'exec format error'."

Add "#!/bin/bash" at the top of the shell script file, and the problem will be resolved. After an hour of frustration and checking five times if the architectures match, this solution saved my day.

To resolve the Docker error standard_init_linux.go:228: exec user process caused: exec format error, you can follow these steps:

  1. Check if the Docker image you are trying to run is compatible with your host system architecture. This error often occurs when trying to run a binary compiled for a different architecture (e.g., running an image built for ARM on an x86 system).
  2. Ensure that the Dockerfile used to build the image specifies the correct base image and architecture.
  3. If you are building the Docker image yourself, make sure to use a multi-stage build process and target the appropriate architecture in your Dockerfile.
  4. If you are pulling an image from a registry, verify that the image is compatible with your host system architecture.
  5. Consider rebuilding the Docker image from source code on the target architecture if pre-built images are not available or compatible.

If the Docker image is built on an M1 chip and then uploaded for deployment on Fargate, you may encounter the following container error:

standard_init_linux.go:228: exec user process caused: exec format error

To address this issue, there are a couple of approaches:

  1. Build your Docker image using the following command:
docker buildx build --platform=linux/amd64 -t image-name:version .
  1. Update your Dockerfile's FROM statements to specify the platform:
FROM --platform=linux/amd64 BASE_IMAGE:VERSION

After attempting to build an ARM image and encountering issues, the problem was resolved by switching to an AMD image.

This error typically occurs when trying to run an amd64 image on a non-amd64 host, such as a 32-bit or ARM system.

To address this, try building using buildx and specifying the platform as linux/amd64:

docker buildx build -t ranjithkumarmv/node-12.13.0-awscli . --platform linux/amd64

If a developer encounters this error in AWS ECS, it's likely because the image was built with an Apple M1 Pro chip.

To address this in your Dockerfile, you can add the following line:

FROM --platform=linux/amd64 <image>:<tag>

If you're using a sub-image, for example, FROM <parent_image_you_created>:<tag>, ensure that <parent_image_you_created>:<tag> was built with FROM --platform=linux/amd64 <image>:<tag>.

I encountered this issue on RHEL 7.3 with Docker 17.05-ce when running an offline loaded image.

It seems that the default storage driver of RHEL/CentOS was changed from device-mapper to overlay. Reverting back the driver to devicemapper resolved the problem.

You can switch the storage driver back to devicemapper using either of the following methods:

  • Run the Docker daemon with the devicemapper storage driver:
  • dockerd --storage-driver=devicemapper
  • Alternatively, you can update the Docker configuration file /etc/docker/daemon.json with the following content:
  • {
      "storage-driver": "devicemapper"
    }

I faced a similar problem with the error message: standard_init_linux.go:228: exec user process caused: exec format error. However, none of the provided solutions worked for me.

Eventually, I discovered that the issue was caused by using an old Docker version, specifically version 17.09.0-ce, which is also the default version on Circle CI. Simply updating Docker to the most recent version resolved the problem.

Container App fails to start up with "standard_init_linux.go:228: exec user process caused: exec format error"

A "multiarch" Python interpreter built on MacOS is designed to support MacOS-on-Intel and MacOS-on-Apple's-arm64.

However, there is no binary compatibility with Linux-on-Apple's-arm64 or with Linux-on-aarch64. It's important to note that MacOS executables cannot be run on Linux, regardless of whether the architectures match or not.