Cara Mengatasi Error “OCI runtime create failed” di Docker [Panduan Terbaru 2026]
Apakah Anda mendapatkan pesan “Error response from daemon: OCI runtime create failed” saat mencoba menjalankan container Docker? Artikel ini memberikan panduan lengkap dan terbaru untuk tahun 2026 tentang penyebab dan solusi spesifik untuk error ini. Baik Anda pemula maupun pengguna tingkat lanjut, panduan langkah demi langkah ini akan membantu Anda menyelesaikan masalah.
- Apa Itu Error Ini? Gejala yang Akan Anda Alami
- Penyebab Error Ini
- Solusi 1: Membaca Pesan Error dan Memperbaiki Masalah Eksekusi (Disarankan)
- Solusi 2: Memperbaiki Izin dan Kebijakan Keamanan
- Solusi 3: Upgrade Docker/runc dan Perbaiki Pengaturan cgroup (Lanjutan)
- Cara Mencegah Error Ini
- Ringkasan
- Referensi
Apa Itu Error Ini? Gejala yang Akan Anda Alami
Error “OCI runtime create failed” menunjukkan bahwa runtime container tingkat rendah Docker, yaitu runc, tidak dapat memulai proses container. OCI (Open Container Initiative) adalah organisasi industri yang mendefinisikan standar container, dan Docker menggunakan runtime yang sesuai dengan OCI untuk mengelola container.
Saat error ini terjadi, terminal Anda akan menampilkan pesan seperti:
docker: Error response from daemon: OCI runtime create failed:
container_linux.go:380: starting container process caused: exec: "python":
executable file not found in $PATH: unknown.
Atau:
Error response from daemon: failed to create shim: OCI runtime create failed:
runc create failed: unable to start container process: error during container init:
error mounting "proc" to rootfs at "/proc": permission denied
Saat error ini terjadi, container Anda sama sekali tidak akan berjalan. Perintah docker run langsung mengembalikan error, sehingga tidak mungkin mengakses aplikasi apa pun di dalam container. Error ini tidak hanya terjadi di lingkungan pengembangan, tetapi juga di pipeline CI/CD produksi (CircleCI, GitHub Actions, dll.) dan kluster Kubernetes, yang menyebabkan deployment terblokir sepenuhnya.
Yang membuat error ini sangat menjengkelkan adalah pesan errornya panjang dan kompleks, sehingga sulit mengidentifikasi akar masalah pada pandangan pertama. Namun, petunjuk kunci tersembunyi di bagian setelah “caused:” dalam pesan error. Artikel ini menjelaskan cara membaca petunjuk tersebut dan memberikan solusi untuk setiap pola.
Penyebab Error Ini
Error “OCI runtime create failed” memiliki lima penyebab utama. Memahami setiap pola akan membantu Anda mengidentifikasi masalah dengan cepat dari pesan error.
Penyebab 1: File Eksekusi Tidak Ditemukan (executable file not found in $PATH)
Ini adalah salah satu penyebab paling umum. Terjadi ketika file eksekusi yang ditentukan di ENTRYPOINT atau CMD Dockerfile tidak ada di $PATH image container. Kasus spesifik meliputi:
- Kesalahan ketik pada nama perintah (misalnya menulis
pytohnalih-alihpython) - Image dasar tidak menyertakan perintah yang diperlukan (misalnya
bashtidak ada di imagealpine) - Lupa menyalin binary ke image akhir dalam multi-stage build
- Pengaturan
WORKDIRyang salah sehingga path script tidak dapat diresolver
Penyebab 2: Masalah Izin (permission denied)
Terjadi ketika proses startup container tidak memiliki izin akses yang diperlukan ke file atau direktori. Kasus umum meliputi:
- Script entrypoint tidak memiliki izin eksekusi (
chmod +x) - SELinux atau AppArmor di mesin host memblokir akses file container
- Pelabelan volume bind mount yang tidak tepat
- Kepemilikan file yang rusak di bawah
/var/lib/docker
Penyebab 3: Versi Docker atau runc yang Usang
Versi lama Docker Engine, containerd, atau runc dapat menyebabkan masalah kompatibilitas dengan fitur kernel terbaru. Khususnya, Docker versi di bawah 25 dilaporkan bermasalah pada distribusi Linux terbaru. Kompatibilitas juga bisa rusak setelah upgrade OS host (misalnya Proxmox VE 8.1 ke 8.2).
Penyebab 4: Masalah Kompatibilitas cgroup v2
Distribusi Linux terbaru (Ubuntu 22.04+, Fedora 31+, dll.) mengaktifkan cgroup v2 secara default. Versi lama Docker atau runc yang tidak mendukung cgroup v2 akan menghasilkan error seperti:
OCI runtime create failed: runc create failed: unable to start container process:
error during container init: error setting cgroup config for procHooks process
cgroup v2 memerlukan kernel 4.15 atau lebih tinggi (disarankan 5.2+).
Penyebab 5: Kehabisan Ruang Disk dan Konflik Sumber Daya
Ketika image dan container Docker menghabiskan ruang disk yang tersedia, error ini muncul dengan pesan no space left on device. Konflik dengan port atau direktori yang sudah digunakan juga dapat menyebabkan error ini.
Solusi 1: Membaca Pesan Error dan Memperbaiki Masalah Eksekusi (Disarankan)
Pendekatan yang paling penting dan efektif adalah membaca dan menginterpretasikan pesan error dengan akurat. Untuk error ini, alasan kegagalan spesifik tercantum setelah caused:.
Langkah 1: Analisis Pesan Error
Pertama, periksa pesan error dengan cermat. Berikut struktur tipikalnya:
Error response from daemon: OCI runtime create failed:
container_linux.go:380: starting container process caused:
exec: "python": executable file not found in $PATH: unknown
Dalam kasus ini, setelah caused:, tertulis exec: "python": executable file not found in $PATH. Ini berarti perintah “python” tidak ditemukan di PATH container.
Langkah 2: Periksa dan Perbaiki Dockerfile
Jika error terkait dengan file eksekusi, periksa Dockerfile Anda:
# Contoh salah: image alpine tidak menyertakan python
FROM alpine:latest
CMD ["python", "app.py"]
# Contoh benar: gunakan image Python resmi
FROM python:3.12-slim
COPY app.py /app/
WORKDIR /app
CMD ["python", "app.py"]
Untuk error bash tidak ditemukan (umum pada image berbasis Alpine Linux):
# Contoh salah
RUN /bin/bash -c "echo hello"
# Contoh benar: Alpine menyertakan ash secara default
RUN /bin/sh -c "echo hello"
# Atau instal bash
RUN apk add --no-cache bash
Langkah 3: Verifikasi File di Dalam Container
Anda dapat menjalankan image secara interaktif untuk memverifikasi keberadaan file:
# Masuk ke container dengan shell yang ditentukan
docker run --rm -it --entrypoint /bin/sh myimage:latest
# Periksa perintah di PATH
which python
echo $PATH
ls -la /app/
Catatan Penting
- Jika menggunakan multi-stage build, verifikasi bahwa semua binary yang diperlukan disalin ke tahap akhir
- Jika
ENTRYPOINTdanCMDkeduanya diatur, periksa bagaimana keduanya digabungkan (bentuk exec vs bentuk shell) - Verifikasi bahwa instruksi
COPYmenyalin file dengan benar dan.dockerignoretidak mengecualikannya
Solusi 2: Memperbaiki Izin dan Kebijakan Keamanan
Jika pesan error mengandung “permission denied”, masalahnya terkait dengan izin atau kebijakan keamanan.
Berikan Izin Eksekusi ke Script Entrypoint
# Berikan izin eksekusi secara lokal
chmod +x entrypoint.sh
# Berikan izin di Dockerfile
COPY entrypoint.sh /app/
RUN chmod +x /app/entrypoint.sh
ENTRYPOINT ["/app/entrypoint.sh"]
Penanganan Lingkungan SELinux
Di lingkungan dengan SELinux aktif (RHEL, CentOS, Fedora, dll.), kebijakan mungkin memblokir akses container ke file host.
# Periksa status SELinux
sestatus
# Periksa log penolakan SELinux
sudo ausearch -m avc -ts recent
# Metode 1: Tambahkan suffix :z atau :Z saat mount volume (disarankan)
docker run -v /host/data:/container/data:z myapp:latest
# Metode 2: Nonaktifkan label SELinux untuk debugging (tidak disarankan untuk produksi)
docker run --security-opt label=disable myapp:latest
Suffix :z membuat volume dapat dibagikan antar beberapa container, sedangkan :Z melabelinya secara eksklusif untuk container tersebut. Selalu gunakan :z atau :Z di produksi dan hindari label=disable.
Penanganan Lingkungan AppArmor
Masalah serupa dapat terjadi dengan AppArmor di Ubuntu dan sistem lainnya. Khususnya, sejak patch keamanan containerd.io 1.7.28-2 pada November 2025, error terkait AppArmor meningkat saat menjalankan Docker di dalam container LXC bersarang.
# Nonaktifkan profil AppArmor untuk debugging (tidak disarankan untuk produksi)
docker run --security-opt apparmor=unconfined myapp:latest
# Periksa status AppArmor
sudo aa-status
Perbaiki Kepemilikan File
# Periksa kepemilikan /var/lib/docker
ls -la /var/lib/docker/
# Restart daemon Docker jika diperlukan
sudo systemctl restart docker
Solusi 3: Upgrade Docker/runc dan Perbaiki Pengaturan cgroup (Lanjutan)
Masalah kompatibilitas versi dan konfigurasi kernel memerlukan perbaikan tingkat yang lebih dalam.
Upgrade Docker Engine
Upgrade ke Docker 25 atau lebih tinggi menyelesaikan banyak masalah kompatibilitas.
# Periksa versi Docker saat ini
docker version
# Untuk Ubuntu/Debian: upgrade dari repositori resmi Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Untuk CentOS/RHEL
sudo yum update docker-ce docker-ce-cli containerd.io
Upgrade runc Secara Terpisah
Anda juga dapat mengupgrade runc secara independen:
# Periksa versi runc
runc --version
# Instal runc terbaru dari rilis GitHub
wget https://github.com/opencontainers/runc/releases/download/v1.2.5/runc.amd64
sudo install -m 755 runc.amd64 /usr/local/sbin/runc
Atasi Kompatibilitas cgroup v2
Jika Anda mengalami error terkait cgroup v2:
# Periksa versi cgroup saat ini
stat -fc %T /sys/fs/cgroup/
# "cgroup2fs" berarti v2 aktif
# Periksa versi kernel (disarankan 5.2+)
uname -r
Metode A: Modifikasi konfigurasi daemon Docker
# Edit /etc/docker/daemon.json
sudo tee /etc/docker/daemon.json <<EOF
{
"default-cgroupns-mode": "host",
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# Restart Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
Metode B: Kembali ke cgroup v1 (tidak disarankan tetapi efektif dalam keadaan darurat)
Tambahkan parameter berikut ke parameter boot GRUB untuk memaksa cgroup v1:
# Edit /etc/default/grub
GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0"
# Update GRUB dan reboot
sudo update-grub
sudo reboot
Periksa dan Bebaskan Ruang Disk
# Periksa ruang disk yang digunakan Docker
docker system df
# Hapus semua image, container, dan volume yang tidak digunakan
docker system prune -a --volumes
# Hapus image yang menggantung
docker image prune
Periksa Konfigurasi Layanan systemd
Di beberapa lingkungan, konfigurasi file unit systemd Docker dapat menyebabkan masalah:
# Periksa file unit layanan Docker
sudo systemctl cat docker.service
# Jika MountFlags=slave diatur, hapus
sudo systemctl edit docker.service
# [Service]
# MountFlags=
# Terapkan perubahan
sudo systemctl daemon-reload
sudo systemctl restart docker
Cara Mencegah Error Ini
Ikuti praktik terbaik berikut untuk mencegah error “OCI runtime create failed”.
1. Ikuti Praktik Terbaik Dockerfile
- Gunakan image resmi sebagai dasar
- Dalam multi-stage build, verifikasi bahwa tahap akhir berisi semua file yang diperlukan
- Pahami dan gunakan dengan benar perbedaan antara
ENTRYPOINTdanCMD - Konfigurasikan file
.dockerignoredengan tepat
2. Uji Secara Menyeluruh di Lokal
# Uji bahwa image yang dibangun berjalan dengan benar
docker build -t myapp:test .
docker run --rm myapp:test
3. Jaga Lingkungan Docker Tetap Terbaru
Perbarui Docker Engine, containerd, dan runc secara berkala. Terapkan pembaruan minor yang berisi patch keamanan dengan segera.
4. Pantau Ruang Disk Secara Teratur
# Periksa penggunaan disk secara berkala
docker system df
# Pembersihan berkala sumber daya yang tidak digunakan
docker system prune -f --filter "until=168h"
5. Tetapkan Versi Docker di Pipeline CI/CD
Saat menggunakan Docker di CI/CD, tetapkan versi Docker untuk mencegah masalah kompatibilitas yang tidak terduga.
Ringkasan
Error “OCI runtime create failed” Docker mungkin terlihat kompleks, tetapi dengan membaca bagian setelah caused: dalam pesan error secara cermat, mengidentifikasi akar masalah relatif mudah.
Poin-poin utama:
- Eksekusi tidak ditemukan → Periksa
ENTRYPOINT/CMDdi Dockerfile dan tentukan path serta perintah yang benar - Error izin → Periksa izin eksekusi script dan pengaturan SELinux/AppArmor
- Masalah kompatibilitas versi → Upgrade Docker, runc, dan kernel ke versi terbaru
- Masalah terkait cgroup → Sesuaikan pengaturan cgroup di daemon.json
- Masalah ruang disk → Bersihkan sumber daya yang tidak perlu dengan
docker system prune
Jika metode dalam artikel ini tidak menyelesaikan masalah Anda, coba:
- Posting pertanyaan di Docker Community Forums (forums.docker.com)
- Cari issue di repositori GitHub moby/moby
- Tanyakan di Stack Overflow dengan output
docker infodandocker version
Menyalin pesan error lengkap dan mencarinya adalah langkah pertama yang paling efisien menuju penyelesaian.
Referensi
- Docker Community Forums: OCI runtime create failed (exec python not found)
- Docker Community Forums: failed to create shim – OCI runtime create failed
- OneUptime: How to Fix Docker OCI Runtime Create Failed Errors (Januari 2026)
- Azure OSS Developers Blog: Troubleshooting OCI runtime create errors
- CircleCI Support: Resolving OCI runtime create failed Errors
- Red Hat Blog: Container permission denied errors
- GitHub moby/moby: OCI runtime create failed issues
- Proxmox Forum: Docker OCI runtime create failed after upgrade

コメント