Dockerfileで「ERROR: Service 'サービス名' failed to build: OCI runtime create failed: invalid mount」が発生した時の対処方法

created
updated

Dockerfileで相対パスを指定するとERROR: Service 'サービス名' failed to build: OCI runtime create failed: invalid mountが発生したので、その対応方法をまとめました。

エラーが発生したDockerのバージョン

Docker

$ docker -v
Docker version 20.10.2

Docker Compose

$ docker-compose -v
docker-compose version 1.25.0, build unknown

ERROR: Service 'サービス名' failed to build: OCI runtime create failed: invalid mount

エラーが発生したDockerfile

ホスト側のディレクトリを相対パスで指定するとエラーが発生しました。

VOLUME [ホスト側]相対パスディレクトリ:[コンテナ側]絶対パスディレクトリ

# 例

VOLUME ./hoge:/hoge

エラー内容

ERROR: Service 'サービス名' failed to build: OCI runtime create failed: invalid mount {Destination:[ホスト側]ディレクトリ:[コンテナ側]ディレクトリ Type:bind Source:/ボリュームの保存先/_data Options:[rbind]}: mount destination [ホスト側]ディレクトリ:[コンテナ側]ディレクトリ not absolute: unknown

対応方法

ホスト側のディレクトリを絶対パスで指定すると問題なく起動ができました。

VOLUME [ホスト側]絶対パスディレクトリ:[コンテナ側]絶対パスディレクトリ

# 例

VOLUME /{絶対パス}/hoge:/hoge

公式ドキュメント

Dockerfile リファレンス — Docker-docs-ja 19.03 ドキュメント

コンテナでデータを管理 — Docker-docs-ja 19.03 ドキュメント

ホスト側のディレクトリ は相対パスでも 名前 でも構いません。ホスト側のディレクトリ に対して絶対パスを指定したら、Docker は指定したパスを拘束マウント(bind-mount)します。この時に 名前 の値を指定したら、Docker は指定した 名前 のボリュームを作成します。

出典:コンテナでデータを管理 — Docker-docs-ja 19.03 ドキュメントhttps://docs.docker.jp/engine/tutorials/dockervolumes.html#mount-a-host-directory-as-a-data-volume

相対パスでも可能とあるのですが、起動ができませんでした。原因不明のため、とりあえず絶対パスで指定することにしました。解決方法が判明次第に追記します。

TypeError: bytes-like object is required, not 'str'

TypeError: bytes-like object is required, not 'str'

上記のエラー発生時でも、同様の対応でエラーが解消できました。

TOP