MeWrite Docs

Docker: OCI runtime create failed

Dockerコンテナの起動時にOCIランタイムエラーが発生した場合

概要

Dockerコンテナの作成・起動時にOCI(Open Container Initiative)ランタイムがコンテナプロセスを開始できない場合に発生するエラーです。バイナリのアーキテクチャ不一致、権限不足、cgroup設定の問題など多岐にわたる原因があります。

エラーメッセージ

docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/app": permission denied: unknown.
docker: Error response from daemon: OCI runtime create failed: runc create failed: unable to start container process: exec: "node": executable file not found in $PATH: unknown.

アーキテクチャ不一致の場合:

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
exec /usr/local/bin/docker-entrypoint.sh: exec format error

原因

  1. アーキテクチャの不一致: ARM(Apple Silicon等)でAMD64用イメージを実行、またはその逆
  2. 実行ファイルの権限不足: バイナリやスクリプトに実行権限がない
  3. 実行ファイルが見つからない: PATHの問題やイメージ内にバイナリが存在しない
  4. cgroup設定の問題: cgroup v1/v2の不整合やリソース制限

解決策

1. プラットフォームを明示的に指定

1
2
3
4
5
6
7
# 実行時にプラットフォームを指定
docker run --platform linux/amd64 nginx:latest

# ビルド時にマルチプラットフォーム対応
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest .

# docker-compose.ymlで指定
1
2
3
4
5
# docker-compose.yml
services:
  app:
    image: myapp:latest
    platform: linux/amd64

2. 実行権限を付与

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Dockerfile内で実行権限を付与
COPY --chmod=755 app /usr/local/bin/app

# またはRUNで付与
COPY app /usr/local/bin/app
RUN chmod +x /usr/local/bin/app

# シェルスクリプトの場合
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

3. バイナリのPATHを確認

1
2
3
4
5
6
7
8
# コンテナ内でPATHを確認
docker run --rm -it myapp:latest sh -c 'echo $PATH'

# バイナリの存在確認
docker run --rm -it myapp:latest which node

# フルパスで指定
docker run --rm myapp:latest /usr/local/bin/node app.js

4. cgroup v2対応

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# cgroupバージョンの確認
stat -fc %T /sys/fs/cgroup/
# cgroup2fsならv2、tmpfsならv1

# Docker daemonのcgroup設定
cat <<'EOF' | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "cgroup-parent": "docker.slice"
}
EOF

sudo systemctl restart docker

5. –privilegedで権限昇格(デバッグ用)

1
2
3
4
5
# 権限問題の切り分け(本番では非推奨)
docker run --privileged myapp:latest

# 必要最小限のcapabilityを付与
docker run --cap-add SYS_ADMIN myapp:latest

関連エラー

Docker の他のエラー

最終更新: 2026-02-03