OCI runtime create failed
エラー
docker-compose up
(docker run
でも同様)時に発生。以下のようなエラーを吐いてコンテナ起動に失敗する。
ERROR: for amazonlinux2-with-xxxx Cannot start service app_server: OCI runtime create failed: container_linux.go:344: starting container process caused "chdir to cwd (\"/root\") set in config.json failed: permission denied": unknown
ERROR: for app_server Cannot start service app_server: OCI runtime create failed: container_linux.go:344: starting container process caused "chdir to cwd (\"/root\") set in config.json failed: permission denied": unknown
ERROR: Encountered errors while bringing up the project.
状況
似たようなエラーが出るケースはいくつかある模様。エラーの種別としては OCI runtime create failed
エラーと言える様だ。
ケースによって対応方法が異なる模様。
- “dockerが起動しない(OCI runtime create failed: container_linux.go:344) - Qiita”
- “docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "open /proc/self/fd: no such file or directory". · Issue #297 · docker/cli”
今回 Docker イメージとコンテナの削除、 Docker の再起動では復旧せずハマる。
原因
starting container process caused "xxxx"
の xxxx のところがエラーを引き起こした処理とエラーメッセージなのでこれが原因に関係するはず。
今回の場合
chdir to cwd (\"/root\") set in config.json failed: permission denied
なので、作業ディレクトリを /root
に変更しようとしたら permission denied
エラーになった、ということ。
今回の場合 Dockerfile
で
〜〜省略〜〜
ARG APP_USER_NAME='local-user'
ARG APP_USER_GROUP="$APP_USER_NAME"
RUN groupadd $APP_USER_GROUP && \
useradd $APP_USER_NAME -g $APP_USER_GROUP
WORKDIR /root
〜〜省略〜〜
USER $APP_USER_NAME
という感じで WORKDIR /root
したあと、一般ユーザーに切り替えた場合、WORKDIR /root
が効いたままになっているのに一般ユーザーでなにかしようとして permission denied
エラーになったというのが原因。
初歩的なケアレスミス。
今回の場合の解決方法
USER $APP_USER_NAME
の前後に WORKDIR /home/$APP_USER_NAME
という感じで、ワークディレクトリをそのユーザーにアクセス権限があるディレクトリに変更すれば解決。
発生環境 docker version
$ docker version
Client: Docker Engine - Community
Version: 18.09.1
API version: 1.39
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:33:12 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.1
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:41:49 2019
OS/Arch: linux/amd64
Experimental: false