【mac】docker runでstandard_init_linux.go:219がでた原因

1 min read読了の目安(約600字

環境

M1 MAC
Tech Preview of Docker Desktop for M1

原因

ENTRYPOINTにshebangをを書いてなかったから

ファイル

$ tree myimage
myimage
├── Dockerfile
└── hello.sh
dockerfile
FROM ubuntu:20.04
COPY ./hello.sh /hello.sh
ENTRYPOINT [ "/hello.sh" ]
hello.sh
echo "Hello, World!"
exec sleep infinity

docker runすると以下のようにエラーが発生した

$ docker run --name mycontainer myimage:v1
standard_init_linux.go:219: exec user process caused: exec format erro

対応

hello.shにshebangを書く

hello.sh
#!/bin/bash
echo "Hello, World!"
exec sleep infinity
$ docker run --name mycontainer myimage:v1
Hello, World!

実行できた