Tempah Konsultasi Hantar Tiket

Menguasai Diagnosis Runtime Kontena Docker: Panduan Praktikal untuk SRE

Selami kegagalan runtime Docker sebenar dengan langkah diagnosis boleh tindak, contoh perintah, langkah keselamatan, dan prosedur rollback. Ketahui bila perlu menghantar tiket ke OpsGlobal.

Menguasai Diagnosis Runtime Kontena Docker: Panduan Praktikal untuk SRE
DevOps 6min 42 paparan 2026-07-11
DockerRuntime KontenaDiagnosisSREKubernetes

Senario

Perkhidmatan mikro dalam kluster Kubernetes memasuki keadaan CrashLoopBackOff. Log Docker menunjukkan ralat: container_linux.go:367: starting container process caused: process_linux.go:578: executing setns process caused: exit status 1: unexpected EOF. Kontena gagal dimulakan, menjejaskan ketersediaan perkhidmatan.

Gejala

  • Status kontena berulang CrashLoopBackOff.
  • Output docker logs kosong atau hanya menunjukkan ralat.
  • Log daemon Docker pada hos menunjukkan ralat runtime.
  • Penggunaan sumber sistem normal, tiada OOM.

Diagnosis

1. Periksa Log Kontena

Jalankan docker logs <container-id> untuk melihat stdout/stderr. Jika kosong, kontena gagal semasa inisialisasi.

2. Periksa Keadaan dan Konfigurasi Kontena

docker inspect <container-id> --format '{{.State.Status}} {{.State.ExitCode}}'

Kod keluar bukan sifar: 139 (ralat segmen), 137 (OOM), 127 (arahan tidak ditemui).

3. Analisis Ralat Runtime OCI

Ralat berasal dari runc (runtime OCI lalai). Periksa /var/log/syslog atau journalctl -u docker untuk jejak timbunan terperinci.

journalctl -u docker -n 100 --no-pager | grep -i error

Punca biasa: - Ketidakserasian versi cgroups (sesetengah aplikasi memerlukan v1, sistem menggunakan v2). - Isu titik lekap (contohnya /proc, /sys tidak dilekap dengan betul). - Polisi keselamatan kernel (AppArmor/SELinux menyekat operasi).

4. Uji runc Secara Berasingan

runc exec <container-id> /bin/sh

Jika gagal, runtime itu sendiri bermasalah.

5. Periksa Konfigurasi cgroups

cat /proc/self/cgroup
mount | grep cgroup

Jika menggunakan cgroup v2, sahkan pengawal wujud di bawah /sys/fs/cgroup.

6. Gunakan strace untuk Penjejakan Panggilan Sistem

strace -f -e trace=process docker run --rm alpine echo hello

Kenal pasti panggilan sistem mana yang gagal.

Kawalan Risiko

  • Jangan jalankan arahan diagnostik seperti runc exec atau strace terus pada kontena pengeluaran; ia boleh mengubah keadaan kontena.
  • Tetapkan had sumber (--memory, --cpu) untuk mengelakkan kehabisan sumber yang mencetuskan isu lain.
  • Hasilkan semula isu dalam persekitaran pementasan terlebih dahulu.
  • Dayakan mod debug Docker (dockerd --debug) untuk log terperinci, tetapi berhati-hati dengan jumlah log.

Rollback

  1. Kembalikan kepada imej kontena sebelumnya: bash kubectl set image deployment/<name> <container>=<image>:<previous-tag>
  2. Jika daemon Docker pada nod Kubernetes tidak berfungsi, mulakan semula: bash systemctl restart docker Nota: Ini menghentikan semua kontena pada nod; nilaikan kesan.
  3. Jika versi runc disyaki, turun taraf atau pasang semula: bash apt-get install --reinstall runc=1.0.0-1

Pengesahan

  • Selepas rollback, tunggu Pod dimulakan dan periksa status: bash kubectl rollout status deployment/<name> kubectl logs -f <pod-name>
  • Akses titik pemeriksaan kesihatan (cth. /healthz).
  • Pantau log daemon Docker untuk ralat baharu.

Bila Menghantar Tiket OpsGlobal

  • Isu melibatkan modul kernel atau konflik versi cgroups yang memerlukan naik taraf kernel atau perubahan konfigurasi sistem.
  • Runtime OCI memerlukan penyesuaian atau naik taraf yang menjejaskan pelbagai perkhidmatan.
  • Masalah berterusan merentas berbilang nod, memerlukan audit runtime penuh.
  • Pasukan anda tiada kebenaran untuk mengubah suai tetapan peringkat hos (cth. nod terurus Kubernetes).

Senario Penggunaan

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

Latar Belakang Masalah

Selami kegagalan runtime Docker sebenar dengan langkah diagnosis boleh tindak, contoh perintah, langkah keselamatan, dan prosedur rollback. Ketahui bila perlu menghantar tiket ke OpsGlobal.

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