Cara Memperbaiki Error Docker “OCI runtime create failed” [Panduan Terbaru 2026]
Pernahkah Anda menemui error “Error response from daemon: OCI runtime create failed” saat mencoba menjalankan container Docker? Error ini menunjukkan bahwa runtime container tingkat rendah Docker (runc) gagal menjalankan container. Dalam artikel ini, kami akan menjelaskan secara detail penyebab dan solusi spesifik untuk error ini berdasarkan informasi terbaru tahun 2026.
Apa itu Error ini? Gejala yang Mungkin Anda Alami
Error “OCI runtime create failed” terjadi ketika Docker mencoba membuat dan menjalankan container menggunakan runtime yang sesuai dengan OCI (Open Container Initiative). OCI adalah organisasi yang mendefinisikan standar industri untuk format container dan runtime, dan Docker menggunakan runc, yang mematuhi standar ini, untuk mengelola container.
Ketika error ini terjadi, Anda mungkin mengalami gejala-gejala berikut:
- Container tidak dapat dijalankan dengan perintah
docker run - Layanan gagal dimulai dengan
docker-compose up - Log container menampilkan pesan “OCI runtime create failed”
- Pesan error seperti “runc create failed: unable to start container process” muncul
Format pesan error biasanya terlihat seperti ini:
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
Error ini dapat terjadi di lingkungan Docker mana pun, termasuk lingkungan pengembangan, pipeline CI/CD, dan lingkungan produksi, yang sangat mempengaruhi pengembangan dan deployment aplikasi berbasis container.
Penyebab Error Ini
Ada beberapa kemungkinan penyebab untuk error OCI runtime create failed. Petunjuk kunci terdapat pada bagian setelah “caused:” dalam pesan error, jadi penting untuk memeriksa seluruh pesan error terlebih dahulu.
Penyebab 1: File Eksekusi Tidak Ditemukan
Salah satu penyebab paling umum adalah file eksekusi atau perintah yang ditentukan tidak ada di dalam container. Error ini terjadi ketika perintah yang ditentukan dalam ENTRYPOINT atau CMD Dockerfile tidak ada dalam image container.
Misalnya, jika Anda mencoba menjalankan perintah python pada base image yang tidak memiliki Python terinstal, Anda akan melihat error berikut:
exec: "python": executable file not found in $PATH
Ini sering terjadi saat menggunakan image ringan seperti Alpine Linux.
Penyebab 2: Kontrol Akses SELinux/AppArmor
Error ini juga dapat terjadi ketika modul keamanan seperti SELinux (Security-Enhanced Linux) atau AppArmor memblokir proses container atau operasi mount. Ini sangat bermasalah dalam situasi berikut:
- Saat me-mount direktori host sebagai volume
- Saat mengakses file device tertentu
- Saat menjalankan container yang memerlukan operasi privileged
Di lingkungan dengan SELinux aktif, Anda mungkin melihat pesan error seperti:
write /proc/self/attr/keycreate: permission denied
Penyebab 3: Masalah Script Entrypoint
Error juga dapat terjadi ketika ada masalah dengan file script seperti entrypoint.sh yang ditentukan dalam Dockerfile. Penyebab utama meliputi:
- File tidak disalin ke image
- Path file salah
- Izin eksekusi tidak diberikan
- Line ending (CRLF) dari script yang dibuat di Windows tidak dikenali di Linux
Penyebab 4: Masalah Versi Docker atau runc
Error ini dapat terjadi ketika versi Docker atau runc tidak kompatibel dengan kernel OS host. Masalah ini sering dilaporkan terutama setelah upgrade di Proxmox VE dan lingkungan virtualisasi lainnya. Banyak kasus teratasi dengan upgrade ke Docker 25 atau lebih tinggi.
Penyebab 5: Masalah Konfigurasi cgroup
Error juga terjadi ketika konfigurasi cgroup (Control Groups) container tidak kompatibel dengan sistem host. Masalah ini sering dilaporkan, terutama selama periode transisi dari cgroupsv1 ke cgroupsv2.
Solusi 1: Periksa File Eksekusi dan Path (Direkomendasikan)
Solusi paling efektif untuk dicoba pertama kali adalah memverifikasi file eksekusi dan path di dalam container.
Langkah 1: Periksa Isi Image
Pertama, verifikasi bahwa perintah yang diperlukan ada di image yang bermasalah:
# Periksa filesystem di image
docker run --rm --entrypoint ls myapp:latest /usr/bin/
# Periksa apakah perintah tertentu ada
docker run --rm --entrypoint which myapp:latest python
Langkah 2: Modifikasi Dockerfile
Jika file eksekusi tidak ada, modifikasi Dockerfile untuk menginstal paket yang diperlukan:
# Untuk Alpine Linux
FROM alpine:latest
RUN apk add --no-cache python3 py3-pip
# Untuk Debian/Ubuntu
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3 python3-pip
Langkah 3: Verifikasi ENTRYPOINT dan CMD
Periksa bahwa ENTRYPOINT dan CMD dikonfigurasi dengan benar di Dockerfile:
# Contoh yang benar
ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["python3", "app.py"]
# Menggunakan path absolut direkomendasikan
ENTRYPOINT ["/usr/local/bin/python3"]
Catatan Penting
- Saat menggunakan shell script, selalu berikan izin eksekusi:
RUN chmod +x /app/entrypoint.sh - Untuk script yang dibuat di Windows, konversi line ending menggunakan perintah
dos2unixatau tangani di dalam Dockerfile
Solusi 2: Mengatasi Masalah SELinux/AppArmor
Berikut cara mengatasi error yang disebabkan oleh SELinux atau AppArmor.
Periksa Status SELinux
# Periksa status SELinux
sestatus
# Periksa log penolakan SELinux terbaru
ausearch -m avc -ts recent
Konfigurasi Label untuk Mount Volume
Saat me-mount volume di lingkungan SELinux, atur label yang sesuai:
# Opsi :z (untuk volume bersama)
docker run -v /host/path:/container/path:z myapp:latest
# Opsi :Z (untuk volume privat)
docker run -v /host/path:/container/path:Z myapp:latest
Konfigurasi Label Persisten
Untuk direktori yang sering digunakan, Anda dapat mengatur label SELinux persisten:
# Atur konteks SELinux untuk container
chcon -Rt svirt_sandbox_file_t /path/to/volume
Nonaktifkan Label SELinux untuk Pengujian
Untuk keperluan troubleshooting, Anda dapat menonaktifkan sementara label SELinux:
docker run --security-opt label=disable myapp:latest
Penting: Menonaktifkan SELinux secara permanen tidak direkomendasikan di lingkungan produksi. Konfigurasi kebijakan yang sesuai setelah memahami sepenuhnya risiko keamanan.
Solusi 3: Upgrade Docker/runc dan Perubahan Konfigurasi (Lanjutan)
Solusi untuk masalah versi atau ketika diperlukan konfigurasi lanjutan.
Upgrade Docker
Jika Anda menggunakan versi Docker yang lama, upgrade ke versi terbaru:
# Untuk Ubuntu/Debian
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
Periksa dan Perbarui Versi runc
# Periksa versi runc
runc --version
# Perbarui runc secara terpisah jika diperlukan
sudo apt-get install runc
Modifikasi Konfigurasi systemd
Di beberapa lingkungan, Anda mungkin perlu memodifikasi konfigurasi systemd Docker:
# Edit file service Docker
sudo systemctl edit docker.service
# Tambahkan konfigurasi berikut (menyelesaikan masalah MountFlags)
[Service]
MountFlags=shared
# Terapkan perubahan
sudo systemctl daemon-reload
sudo systemctl restart docker
Konfigurasi Driver cgroup
Jika ada masalah kompatibilitas driver cgroup, modifikasi konfigurasi daemon Docker:
# Edit /etc/docker/daemon.json
sudo nano /etc/docker/daemon.json
Tambahkan konten berikut:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
Setelah konfigurasi, restart Docker:
sudo systemctl restart docker
Cara Mencegah Error Ini
Berikut adalah praktik terbaik untuk mencegah error OCI runtime create failed.
Praktik Terbaik Dockerfile
- Gunakan base image yang terpercaya: Gunakan image resmi atau terverifikasi dan pastikan mengandung dependensi yang diperlukan.
-
Manfaatkan multi-stage build: Hindari menyertakan alat atau file yang tidak diperlukan di image final.
-
Atur izin eksekusi secara eksplisit: Selalu jalankan
chmod +xpada file script. -
Gunakan path absolut: Gunakan path absolut daripada relatif di
ENTRYPOINTdanCMD.
Pemeliharaan Rutin
-
Jaga Docker dan runc tetap terbaru: Lakukan update secara berkala untuk patch keamanan dan peningkatan kompatibilitas.
-
Hapus image dan container yang tidak digunakan: Jalankan
docker system prunesecara berkala untuk membebaskan ruang disk. -
Monitor log: Periksa log sistem Docker secara berkala dengan
journalctl -u docker.
Pengujian Pra-deployment
Selalu verifikasi bahwa container dapat dimulai dengan benar di lingkungan lokal atau staging sebelum men-deploy ke produksi. Memasukkan pengujian startup container ke dalam pipeline CI/CD Anda juga efektif.
Ringkasan
Error Docker “OCI runtime create failed” adalah error umum yang menunjukkan bahwa runtime container tidak dapat menjalankan container. Penyebab utama termasuk file eksekusi yang hilang, kontrol akses SELinux/AppArmor, error konfigurasi entrypoint, masalah versi Docker/runc, dan inkonsistensi konfigurasi cgroup.
Saat troubleshooting, penting untuk terlebih dahulu memeriksa bagian setelah “caused:” dalam pesan error untuk mengidentifikasi penyebab spesifik. Dalam banyak kasus, masalah dapat diselesaikan dengan memodifikasi Dockerfile atau menambahkan opsi mount volume.
Jika masalah berlanjut, coba langkah-langkah berikut:
- Periksa informasi error lebih detail dengan
docker logsataujournalctl - Cari masalah serupa di forum resmi Docker atau Stack Overflow
- Pertimbangkan untuk upgrade versi Docker Anda
- Verifikasi kompatibilitas antara kernel OS host dan Docker
Teknologi container berkembang setiap hari, dan banyak masalah teratasi di versi yang lebih baru. Pertahankan lingkungan container yang stabil melalui update berkala dan manajemen konfigurasi yang tepat.
Referensi
- How to Fix Docker “OCI Runtime Create Failed” Errors – OneUptime
- Docker OCI runtime create failed error | Resolved – Bobcares
- Fixing “OCI Runtime Error” When Running Docker Containers – Magetop Blog
- Resolving “Error response from daemon: OCI runtime create failed” Errors – CircleCI Support Center
- Container permission denied: How to diagnose this error – Red Hat
- Troubleshooting OCI runtime create errors – Azure OSS Developer Support
- How to Resolve DockerRunc Create Failed? – GeeksforGeeks
- Docker Community Forums – OCI runtime create failed Discussions

コメント