Docker Error Response From Daemon: Oci Runtime Error
Error docker: Error response from daemon: OCI runtime error muncul ketika Docker gagal menjalankan container pada fase paling dasar, yaitu saat runtime container mencoba membuat dan menjalankan proses di dalam container. Error ini tidak berkaitan dengan aplikasi di dalam container, melainkan dengan interaksi antara Docker daemon, runtime (seperti runc atau containerd), dan sistem operasi host.
Dalam praktik DevOps, error ini sering ditemui baik di lingkungan local development maupun server production. Penyebabnya beragam, mulai dari permission filesystem, konfigurasi cgroup yang tidak kompatibel, kernel Linux yang tidak mendukung fitur tertentu, hingga kesalahan pada Dockerfile atau entrypoint container. Karena error muncul sebelum container benar-benar berjalan, pesan yang ditampilkan sering kali minim dan membingungkan.
Pemahaman teknis yang tepat mengenai OCI runtime error menjadi krusial karena pendekatan trial-and-error hampir selalu gagal. Error ini hanya dapat diselesaikan dengan mengidentifikasi titik kegagalan pada runtime layer Docker dan menyesuaikannya dengan kondisi sistem host.
Penjelasan Error docker: Error response from daemon: OCI runtime error
OCI runtime error adalah error yang berasal dari runtime container yang mematuhi spesifikasi Open Container Initiative (OCI). Runtime ini bertanggung jawab untuk membuat namespace, mount filesystem, mengatur cgroup, serta mengeksekusi proses utama container.
Error ini muncul setelah Docker daemon berhasil menarik image dan sebelum proses PID 1 di dalam container berjalan. Pada tahap ini, Docker sudah menyerahkan eksekusi ke runtime seperti runc. Ketika runtime gagal menyelesaikan salah satu langkah inisialisasi, Docker daemon hanya melaporkan kegagalan tersebut sebagai OCI runtime error.
Lingkungan yang paling sering terdampak adalah Linux dengan konfigurasi kernel minimal, VPS berbasis container (OpenVZ, LXC lama), sistem dengan AppArmor atau SELinux ketat, serta host dengan versi Docker yang tidak selaras dengan versi kernel atau containerd.
Penyebab Utama Error OCI runtime error
Permission filesystem tidak valid
Salah satu penyebab paling umum adalah permission atau ownership filesystem yang tidak sesuai. Container membutuhkan hak akses tertentu untuk mount volume, menulis ke direktori kerja, atau mengeksekusi binary. Jika direktori di host dipetakan ke container dengan permission yang lebih ketat, runtime akan gagal sebelum proses container berjalan.
Kasus nyata sering terjadi saat menjalankan container sebagai non-root user, sementara direktori hasil mount dimiliki oleh root tanpa permission write.
Entrypoint atau command tidak dapat dieksekusi
Jika file entrypoint tidak memiliki permission executable atau menggunakan interpreter yang tidak tersedia di dalam image, runtime akan gagal mengeksekusi proses utama. Error ini sering muncul pada image berbasis Alpine atau scratch ketika script shell tidak memiliki shebang yang valid.
Arsitektur binary tidak sesuai
Menjalankan image dengan arsitektur berbeda dari host, misalnya image amd64 di host arm64 tanpa emulasi, akan menyebabkan runtime gagal mengeksekusi binary. Docker daemon tidak selalu memberikan pesan eksplisit mengenai mismatch arsitektur, sehingga error hanya muncul sebagai OCI runtime error.
Konfigurasi cgroup dan kernel incompatibility
Docker membutuhkan dukungan kernel untuk cgroup v1 atau v2, namespace, dan fitur mount tertentu. Pada sistem dengan kernel lama atau VPS berbasis virtualisasi container, fitur ini sering dibatasi. Akibatnya, runtime gagal membuat cgroup atau namespace yang dibutuhkan.
Konflik security module (SELinux atau AppArmor)
SELinux dan AppArmor dapat memblokir operasi mount, execution, atau akses filesystem yang dibutuhkan container. Jika profile security terlalu ketat atau tidak disesuaikan, runtime akan dihentikan oleh kernel.
Cara Memverifikasi Penyebab Error
Memeriksa log Docker daemon
Langkah pertama adalah membaca log Docker daemon untuk mendapatkan error detail dari runtime.
journalctl -u docker --no-pager
Log ini sering menampilkan pesan runc atau containerd yang tidak muncul di output CLI Docker.
Menjalankan container dengan mode debug
Menjalankan container secara interaktif dapat membantu mengisolasi masalah entrypoint.
docker run --rm -it --entrypoint /bin/sh image_name
Jika container dapat dijalankan dengan shell, masalah hampir pasti berada pada entrypoint atau command default.
Memverifikasi permission file dan volume
Periksa permission direktori host yang dipetakan ke container.
ls -ld /path/on/host
Pastikan user di dalam container memiliki hak akses sesuai.
Memeriksa arsitektur image dan host
docker inspect image_name --format '{{.Architecture}}'
uname -m
Perbedaan arsitektur tanpa dukungan emulasi akan langsung memicu runtime error.
Mengecek dukungan kernel dan cgroup
docker info | grep -i cgroup
uname -r
Output ini memastikan Docker berjalan dengan konfigurasi kernel yang kompatibel.
Solusi Utama untuk Mengatasi OCI runtime error
Memperbaiki permission dan ownership
Pastikan direktori yang dimount memiliki permission write dan execute yang sesuai.
chown -R 1000:1000 /path/on/host
chmod -R 755 /path/on/host
Langkah ini memastikan runtime dapat melakukan mount dan eksekusi tanpa ditolak oleh kernel.
Memastikan entrypoint executable
Tambahkan permission executable dan shebang yang valid.
chmod +x entrypoint.sh
Gunakan interpreter yang tersedia di dalam image, misalnya /bin/sh untuk Alpine.
Menggunakan image dengan arsitektur yang sesuai
Pilih image yang sesuai dengan host atau gunakan multi-arch image.
docker pull --platform linux/arm64 image_name
Menyesuaikan konfigurasi security module
Untuk SELinux, gunakan label yang sesuai.
docker run -v /data:/data:Z image_name
Untuk AppArmor, gunakan profile unconfined jika diperlukan.
docker run --security-opt apparmor=unconfined image_name
Memperbarui Docker dan kernel
Versi Docker yang lebih baru sering menyertakan perbaikan runtime compatibility.
apt update && apt install docker-ce docker-ce-cli containerd.io
Solusi Alternatif Berdasarkan Lingkungan
Local development
Gunakan Docker Desktop terbaru dan pastikan backend VM mendukung cgroup v2. Restart Docker Desktop sering kali memperbaiki state runtime yang korup.
Server production
Hindari VPS berbasis container lama. Gunakan KVM atau bare metal dengan kernel LTS. Pastikan swap dan disk space mencukupi karena kegagalan resource juga dapat memicu runtime error.
Pipeline CI/CD
Gunakan executor berbasis privileged container atau machine executor. Banyak runner CI membatasi namespace dan cgroup sehingga Docker-in-Docker gagal menjalankan runtime.
Kesalahan yang Sering Dilakukan
Menghapus dan menarik ulang image tanpa memahami penyebab error tidak menyelesaikan masalah runtime. Error ini tidak berasal dari image corruption, melainkan dari interaksi runtime dengan host.
Menjalankan Docker dengan flag --privileged secara membabi buta juga merupakan kesalahan umum. Meskipun sering "berhasil", pendekatan ini menutupi akar masalah dan berisiko terhadap keamanan sistem.
Mengabaikan log Docker daemon dan hanya mengandalkan output CLI menyebabkan diagnosa tidak akurat karena detail error runtime tidak ditampilkan di level CLI.
Pencegahan Error di Masa Depan
Gunakan base image resmi dan multi-arch. Selalu definisikan user di Dockerfile dan sesuaikan permission filesystem sejak tahap build.
Pastikan entrypoint script memiliki permission executable dan interpreter yang eksplisit. Hindari asumsi bahwa shell tertentu tersedia di semua image.
Kelola volume dengan konsisten dan hindari mount direktori sistem host yang dilindungi. Gunakan named volume jika memungkinkan.
Jaga keselarasan antara versi Docker, containerd, dan kernel. Lakukan update berkala dan uji image pada environment yang menyerupai production.
Penutup
docker: Error response from daemon: OCI runtime error menandakan kegagalan fundamental pada lapisan runtime container, bukan pada aplikasi. Error ini selalu memiliki penyebab teknis yang dapat diverifikasi melalui log, konfigurasi host, dan struktur image. Dengan memahami bagaimana Docker berinteraksi dengan kernel, filesystem, dan security module, error ini dapat diselesaikan secara sistematis dan dicegah agar tidak kembali muncul di lingkungan produksi.
.webp)