結論
DockerfileでENTRYPOINTではなくCMDを使っていたことが原因だった。
# NG
CMD [ "python3", "./main.py" ]
# OK
ENTRYPOINT [ "python3", "./main.py" ]
公式ドキュメントではENTRYPOINTを使うように指示されているのに、勝手に変えたのが良くなかった。
ローカル環境ではCMDでも動いてしまうので注意。
CMDの場合、CMDで指定した全てのコマンドがdocker run
時に渡されたコマンドで置き換えられるが、ENTRYPOINTの場合はdocker run
時に渡された引数をオプションに付けるだけとなる。
CMDで指定してしまうと、gcloud ai-platform jobs submit training
時に渡したオプションでpythonの実行コマンド自体が置き換えられてしまい、エラーとなったと思われる。