Tempah Konsultasi Hantar Tiket

Penyelesaian Masalah Runtime Kontena Docker: Panduan Praktikal Langkah-demi-Langkah

Panduan praktikal untuk menyelesaikan kegagalan runtime kontena Docker—meliputi ralat OCI, kontena keluar, kehabisan sumber, dan aliran pemulihan untuk SRE pengeluaran.

Penyelesaian Masalah Runtime Kontena Docker: Panduan Praktikal Langkah-demi-Langkah
DevOps 6min 3 paparan 2026-08-19
DockerRuntime KontenaPenyelesaian MasalahSRE

Senario

Perkhidmatan web pengeluaran anda baru sahaja memulangkan 502. Papan pemantauan menunjukkan kontena yang menjalankan API anda telah hilang. Anda SSH ke hos dan lihat kontena terperangkap dalam gelung but semula—atau lebih teruk, telah keluar dengan ralat runtime OCI. Ini bukan kerosakan kod aplikasi; ia adalah runtime kontena gagal untuk memulakan atau mengekalkan eksekusi. Artikel ini membimbing anda melalui laluan penyelesaian masalah dunia sebenar untuk isu runtime kontena Docker pada hos Linux.

Simptom

Penunjuk biasa bahawa runtime, bukan aplikasi anda, yang menjadi masalah:

  • Kontena keluar serta-merta dengan kod 137 (SIGKILL) atau 139 (SIGSEGV).
  • docker inspect menunjukkan mesej State.Error seperti: OCI runtime exec failed: exec failed: unable to start container process: exec: '/bin/sh': stat /bin/sh: no such file or directory.
  • Pemeriksaan kesihatan gagal dan kontena berada dalam gelung backoff but semula.
  • Daemon Docker memulangkan: Error response from daemon: containerd: container did not start before required deadline.
  • Kontena dibunuh kerana OOM atau mencapai had cgroup.

Diagnosis

Mula dengan docker ps -a untuk mendapatkan ID kontena dan status keluar. Kemudian gunakan docker inspect untuk melihat kiraan but semula, kod keluar, dan ralat yang tepat. Sentiasa kumpul log sebelum menyentuh kontena.

Perintah berguna:

docker ps -a --filter 'name=your-service'
docker inspect <container_id> --format '{{.State.ExitCode}} {{.State.Error}}'
docker logs <container_id> --tail 200 --timestamps
docker stats --no-stream

Runtime Docker bergantung pada containerd dan runc. Semak kesihatan mereka:

systemctl status docker containerd
docker info | grep -i runtime
runc --version

Jika ralat berlaku pada peringkat rendah, periksa mesej kernel:

dmesg | tail -50
journalctl -u containerd --since '10 minutes ago'

Kawalan Risiko

  • Sentiasa simpan keadaan semasa dengan docker inspect dan docker logs sebelum sebarang tindakan.
  • Utamakan penutupan secara lembut: docker stop -t 30 <container_id> daripada membunuh serta-merta.
  • Jangan jalankan docker rm -f pada kontena pengeluaran tanpa mengambil log dan mengesahkan imej gantian tersedia.
  • Apabila memulakan kontena baharu, tetapkan had memori dan CPU, contohnya --memory=512m --cpus=0.5, untuk mengelakkan kehabisan sumber hos.
  • Jika menggunakan runtime tersuai seperti gVisor, sahkan runtime dipasang dan dikonfigurasi dengan betul sebelum but semula.

Gulung Balik

Jika kegagalan berlaku sejurus selepas penggunaan, gulung balik ke tag imej sebelumnya yang diketahui baik. Contohnya:

docker pull your-app:stable
docker run -d --name your-app-rollback --env-file .env your-app:stable

Kemas kini pengurus penggunaan anda (Kubernetes, Docker Swarm, atau unit systemd) untuk menggunakan tag lama. Jika ralat disebabkan oleh fail binari hilang atau entrypoint salah dalam imej, gulung balik kepada imej yang berfungsi sebelum ini biasanya boleh memulihkan perkhidmatan dalam beberapa minit.

Pengesahan

Selepas pemulihan, sahkan kontena stabil:

  • docker ps menunjukkan kontena berjalan.
  • docker logs --tail 20 menunjukkan log permulaan normal.
  • Titik akhir kesihatan perkhidmatan memulangkan 200 OK.
  • Jalankan docker inspect untuk mengesahkan tiada lonjakan polisi but semula.

Pantau selama sekurang-kurangnya 10 minit untuk memastikan pembaikan tahan lama.

Bila Menghantar Tiket OpsGlobal

Naik taraf kepada OpsGlobal jika:

  • Ralat runtime masih berterusan selepas gulung balik ke imej yang baik.
  • Anda melihat mesej seperti runc: symbol lookup error atau overlayfs: mount error dalam log sistem.
  • Berbilang hos dalam kluster menunjukkan corak kegagalan yang sama.
  • Anda mengesyaki isu peringkat kernel atau perkakasan (ralat halaman, ralat I/O, masalah NUMA).

OpsGlobal boleh melakukan diagnostik mendalam pada daemon Docker, containerd, runc, dan parameter kernel, kemudian menggunakan pembaiki panas atau konfigurasi kestabilan jangka panjang.

Senario Penggunaan

Sesuai untuk pasukan yang menyelesaikan isu DevOps dan memerlukan aliran kerja yang jelas.

Latar Belakang Masalah

Panduan praktikal untuk menyelesaikan kegagalan runtime kontena Docker—meliputi ralat OCI, kontena keluar, kehabisan sumber, dan aliran pemulihan untuk SRE pengeluaran.

Langkah Penyelesaian

Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.

Contoh Arahan

Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.

Risiko

Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.

Pelan Rollback

Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.

Senarai Serahan

Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.

!

Perlu bantuan isu teknikal serupa?

Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.

Tiket Hubungi WhatsApp Konsultasi