機械学習エンジニアの備忘録

主に自分が勉強したことのメモ

Dockerコンテナ実行時に standard_init_linux.go:219: exec user process caused: exec format error が出る

alpineをベースイメージとしてDockerfileの最後でCMDやENTORYPOINT等でシェルスクリプトを実行したときに以下のようなエラーが出た。
環境はmacOS Catalina 10.15.7、Docker desktop3.1.0

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

いろいろググるとarmやx86_64のアーキテクチャの違いとかが出てくるがalpineとintelCPUのmacOSなので大丈夫なはず。
結局以下のリンクの内容と同じ原因だった。

www.lewuathe.com

単にshell scriptの書き方が悪く、ファイルの先頭に #!/bin/bash を書いていなかったことが原因だった。

シェルスクリプトを修正し、再度実行すると次は以下のようなエラーが。

standard_init_linux.go:211: exec user process caused "no such file or directory"

どうやらalineではbashは使えないらしくashを使う必要があるらしい。
シェルスクリプトの先頭を#!/bin/ashにすると無事動いた。