Tempah Konsultasi Hantar Tiket

Penyelesaian Masalah Runtime Kontena Docker: Panduan Praktikal

Artikel ini merangkumi isu runtime kontena Docker biasa, alat dan arahan diagnostik, kawalan risiko, strategi undur, pengesahan, dan bila perlu menghubungi OpsGlobal untuk sokongan pakar.

Penyelesaian Masalah Runtime Kontena Docker: Panduan Praktikal
DevOps 6min 54 paparan 2026-06-27
DockerRuntime KontenaPenyelesaian MasalahKubernetesSRE

Senario

Dalam persekitaran produksi, kontena Docker mungkin gagal dimulakan, keluar secara tiba-tiba, mengalami kemerosotan prestasi, atau masalah rangkaian. Panduan ini menggunakan senario tipikal: kontena mikros perkhidmatan dalam kluster Kubernetes berulang kali memasuki CrashLoopBackOff tanpa ralat jelas dalam log, memerlukan penyelesaian masalah secara sistematik.

Gejala

  • Kontena keluar sejurus selepas dimulakan dengan status Exited (1) atau Exited (137)
  • docker logs tidak menunjukkan output atau hanya mesej umum
  • kubectl describe pod menunjukkan CrashLoopBackOff
  • dmesg hos menunjukkan OOM atau ralat kernel
  • Proses dalam kontena tidak responsif atau tamat masa

Diagnosis

1. Periksa Log Kontena

docker logs --tail 100 <container_id>
docker logs --since 5m <container_id>

Jika log tidak membantu, cuba lampirkan stdin/stdout:

docker attach --sig-proxy=false <container_id>

2. Periksa Keadaan Kontena dan Kod Keluar

docker inspect <container_id> --format '{{.State.ExitCode}}'
docker inspect <container_id> | jq '.[0].State'
  • Kod keluar 137: SIGKILL, biasanya disebabkan oleh OOM atau docker stop
  • Kod keluar 1: ralat aplikasi, periksa log aplikasi
  • Kod keluar 0: keluar normal, tetapi mungkin diambil alih oleh proses init

3. Periksa Had Sumber dan OOM

docker stats --no-stream <container_id>
cat /sys/fs/cgroup/memory/docker/<container_id>/memory.oom_control

Periksa sama ada pembilang oom_kill meningkat.

4. Periksa Sistem Fail dan Pemacu Storan

docker info | grep -i "Storage Driver"
df -h /var/lib/docker

Pemacu storan (contohnya overlay2) penuh atau kehabisan inod akan menghalang penulisan kontena.

5. Periksa Rangkaian dan DNS

docker exec <container_id> ping -c 3 google.com
docker exec <container_id> nslookup <service_name>

Jika resolusi DNS gagal dalam kontena, periksa /etc/resolv.conf atau mod rangkaian Docker.

6. Periksa Kernel dan Versi cgroup

uname -r
cat /sys/fs/cgroup/unified/

Docker 20.10+ secara lalai menggunakan cgroup v2; sesetengah aplikasi lama mungkin tidak serasi.

7. Guna docker events untuk Pemantauan Masa Nyata

docker events --filter 'container=<container_id>'

Perhatikan peristiwa kitaran hayat kontena.

Arahan

# Lihat pokok proses
docker top <container_id>

# Masuki ruang nama untuk debug
docker run --rm -it --pid=container:<container_id> --net=container:<container_id> --cap-add SYS_PTRACE nicolaka/netshoot

# Eksport sistem fail kontena
docker export <container_id> -o container.tar

# Periksa lapisan imej
docker history <image_name>

Kawalan Risiko

  • Jangan sekali-kali melaksanakan docker restart atau docker rm -f secara langsung dalam produksi tanpa menjalankan docker pause atau pemeriksaan kesihatan terlebih dahulu
  • Semasa diagnosis, gunakan arahan hanya-baca seperti docker logs dan docker inspect untuk mengelak mengubah keadaan kontena
  • Sebelum memulakan semula, buat snapshot atau jalankan docker commit untuk menyimpan keadaan semasa
  • Apabila melaraskan parameter kernel, sahkan dahulu dalam persekitaran ujian

Undur

  1. Rekod konfigurasi kontena semasa: docker inspect <container_id> > container_config.json
  2. Hentikan kontena bermasalah: docker stop <container_id>
  3. Pulihkan versi imej sebelumnya: docker pull <image_name>:<previous_tag>
  4. Mulakan semula dengan parameter asal: docker run --name <container_name> ... <image_name>:<previous_tag>
  5. Jika diurus oleh pengaturcara, kemas kini konfigurasi dan gunakan semula: kubectl rollout undo deployment/<deployment_name>

Pengesahan

  • Sahkan status kontena berjalan: docker ps -a | grep <container_name>, Status sepatutnya "Up"
  • Periksa titik akhir kesihatan aplikasi: curl -f http://localhost:<port>/health
  • Pantau log untuk ralat: docker logs --tail 50 <container_id> tidak menunjukkan timbunan pengecualian
  • Sahkan penggunaan sumber: docker stats --no-stream <container_id> menunjukkan CPU/memori dalam julat yang dijangkakan
  • Uji sambungan rangkaian: akses kontena dari perkhidmatan lain tanpa ralat

Bila Perlu Menghantar Tiket OpsGlobal

Hubungi pakar OpsGlobal dengan segera apabila:

  • Kegagalan kontena melibatkan panik kernel, kerosakan sistem fail yang tidak boleh dipulihkan, atau kegagalan perkakasan
  • Arahan diagnostik melaporkan "kebenaran ditolak" atau "panggilan sistem dihadkan" dan tidak boleh ditingkatkan dengan selamat menggunakan --privileged
  • Tingkah laku runtime kontena menyimpang secara ketara daripada dokumentasi rasmi, mencadangkan pepijat dalam Docker atau containerd
  • Kegagalan menjejaskan berbilang nod atau keseluruhan kluster, memerlukan penyelarasan pelbagai sumber
  • Selepas menghabiskan semua langkah di atas, kontena masih tidak dapat pulih dan masa henti perniagaan melebihi RTO

Semasa menghantar tiket, lampirkan: docker info, docker version, petikan syslog yang berkaitan, ID kontena bermasalah, dan output arahan diagnostik.

Senario Penggunaan

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

Latar Belakang Masalah

Artikel ini merangkumi isu runtime kontena Docker biasa, alat dan arahan diagnostik, kawalan risiko, strategi undur, pengesahan, dan bila perlu menghubungi OpsGlobal untuk sokongan pakar.

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