Tempah Konsultasi Hantar Tiket

Panduan Penyelesaian Masalah Runtime Kontena Docker

Panduan praktikal untuk mendiagnosis dan menyelesaikan masalah runtime kontena Docker yang biasa, terutamanya OOMKilled (kod keluar 137). Termasuk langkah diagnosis, arahan, kawalan risiko, rollback, dan pengesahan.

Panduan Penyelesaian Masalah Runtime Kontena Docker
DevOps 6min 10 paparan 2026-06-13
Dockerruntime kontenapenyelesaian masalahOOMKilledkod keluar 137

Senario

Kontena produksi yang menjalankan aplikasi Java berulang kali keluar dengan kod 137 (OOMKilled). Log aplikasi tiada ralat, tetapi kontena ranap setiap beberapa minit.

Gejala

  • docker ps -a menunjukkan status kontena sebagai Exited (137)
  • docker inspect <kontena> menunjukkan State.ExitCode: 137 dan State.OOMKilled: true
  • Hos dmesg mengandungi mesej Out of memory: Kill process
  • Penggunaan memori kontena menghampiri atau melebihi had

Diagnosis

  1. Periksa kod keluar: docker inspect <kontena> --format='{{.State.ExitCode}}'
  2. Sahkan OOM: docker inspect <kontena> --format='{{.State.OOMKilled}}'
  3. Pantau penggunaan memori: docker stats <kontena> atau baca fail cgroup: cat /sys/fs/cgroup/memory/docker/<id-kontena>/memory.usage_in_bytes
  4. Periksa log kernel hos: dmesg | grep -i oom
  5. Semak tetapan memori aplikasi: Argumen JVM -Xmx dan -Xms

Arahan

  • Lihat butiran kontena: docker inspect <kontena>
  • Lihat log: docker logs <kontena>
  • Statistik masa nyata: docker stats --no-stream
  • Laraskan had memori dan mulakan semula: docker update --memory 512m --memory-swap 512m <kontena> kemudian docker restart <kontena>

Kawalan Risiko

  • Tetapkan had yang sesuai: Gunakan --memory dan --memory-swap (tetapkan sama untuk mematikan swap)
  • Rizab memori: Gunakan --memory-reservation untuk had lembut
  • Pemantauan: Integrasi dengan Prometheus, tetapkan amaran apabila penggunaan memori > 80%
  • Amalan terbaik produksi: Gunakan ResourceQuota dan LimitRange Kubernetes

Rollback

  • Kembali ke imej sebelumnya: docker rollback <kontena> atau gunakan semula imej lama
  • Pulihkan had sumber asal: docker update --memory <asli> --memory-swap <asli> <kontena>

Pengesahan

  • Kontena kekal Up untuk tempoh yang panjang
  • docker stats menunjukkan penggunaan memori di bawah had yang ditetapkan
  • Tiada entri OOM baharu dalam dmesg

Bila Perlu Hantar Tiket OpsGlobal

  • OOMKilled berterusan walaupun had sumber betul
  • Kehabisan memori pada tahap hos menjejaskan pelbagai kontena
  • Perlukan bantuan menala memori aplikasi (contohnya, timbunan JVM)
  • Ralat runtime kontena pada peringkat kernel (contohnya, kegagalan shim, segfault)

Senario Penggunaan

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

Latar Belakang Masalah

Panduan praktikal untuk mendiagnosis dan menyelesaikan masalah runtime kontena Docker yang biasa, terutamanya OOMKilled (kod keluar 137). Termasuk langkah diagnosis, arahan, kawalan risiko, rollback, dan pengesahan.

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