Senario
Anda menyelenggara aplikasi mikroservis yang tiba-tiba berhenti berfungsi — kontena gagal dimulakan atau berkelakuan tidak menentu. Ini mungkin disebabkan oleh isu runtime kontena seperti kegagalan Docker Engine, containerd, atau runc.
Gejala
- Kontena keluar serta-merta selepas dimulakan
- Status kontena menunjukkan "Exited" atau "CrashLoopBackOff"
- Kontena berjalan tetapi tidak responsif atau ralat
- Penggunaan sumber yang tidak normal (CPU/memori tinggi)
- Log daemon Docker menunjukkan ralat
Diagnosis
1. Periksa Log Kontena
docker logs --tail 100 <container_id>
Cari ralat peringkat aplikasi. Jika kontena tidak pernah dimulakan, gunakan docker logs <container_id> untuk mendapatkan output terakhir.
2. Periksa Keadaan Kontena
docker inspect <container_id> | jq '.[0].State'
Periksa kod keluar, kiraan mulakan semula, dan butiran ralat.
3. Pantau Acara Langsung
docker events --filter 'container=<container_id>' --since '1m'
Perhatikan acara kitaran hidup kontena (mula, mati, OOM, dll.).
4. Periksa Penggunaan Sumber
docker stats --no-stream <container_id>
Semak metrik CPU, memori, dan I/O.
5. Periksa Keadaan Runtime Asas
Gunakan crictl untuk berkomunikasi terus dengan containerd:
crictl ps -a
crictl inspect <container_id>
Dapatkan maklumat terperinci tentang kontena yang diuruskan oleh kubelet.
6. Periksa Daemon Docker
journalctl -u docker.service --since '1 hour ago' | grep ERROR
Atau lihat fail log Docker: /var/log/docker.log.
Ringkasan Perintah Diagnostik
| Perintah | Tujuan |
|---|---|
docker logs |
Lihat log aplikasi |
docker inspect |
Dapatkan konfigurasi dan keadaan kontena |
docker events |
Pantau acara masa nyata |
docker stats |
Lihat penggunaan sumber |
crictl ps |
Senaraikan kontena yang diuruskan containerd |
journalctl -u docker |
Periksa log sistem Docker |
Kawalan Risiko
- Elakkan perintah merosakkan seperti
docker rm -fataudocker system prunesecara langsung dalam pengeluaran. - Hasilkan semula isu dalam persekitaran ujian terpencil.
- Buat sandaran kontena dan data penting sebelum membuat perubahan.
- Sediakan pelan rollback sebelum memulakan diagnostik.
Strategi Rollback
- Mulakan semula kontena: Cuba
docker restart <container_id>. - Rollback versi imej: Tarik tag imej yang diketahui baik sebelumnya:
bash docker pull myapp:v1.0.0 docker stop <container_id> docker rm <container_id> docker run -d --name myapp_container myapp:v1.0.0 - Gunakan rollback orkestrasi: Contohnya,
kubectl rollout undo deployment/myapppada Kubernetes. - Pulihkan volume kontena: Jika menggunakan bind mount, pulihkan data dari sandaran.
Pengesahan
- Sahkan kontena berjalan:
docker psmenunjukkan status "Up". - Periksa titik akhir kesihatan:
curl http://localhost:8080/healthmengembalikan 200. - Semak log aplikasi tiada ralat.
- Jalankan ujian fungsi untuk memastikan perkhidmatan sihat.
Bila untuk Hantar Tiket OpsGlobal
- Isu berterusan selepas penyelesaian masalah awal.
- Ralat peringkat kernel (OOM kill, kernel panic) muncul.
- Komponen runtime kontena (containerd, runc) gagal menjejaskan pelbagai kontena.
- Analisis prestasi mendalam atau analisis punca sebenar diperlukan.
- Persekitaran pengeluaran mengalami gangguan berterusan — memerlukan sokongan pakar 24/7.
OpsGlobal menyediakan sokongan DevOps/SRE jarak jauh untuk menterjakan dan menyelesaikan isu runtime yang kompleks dengan cepat, meminimumkan masa henti.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu DevOps dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini menyediakan penerokaan mendalam tentang penyelesaian masalah runtime kontena Docker, meliputi senario biasa, gejala, perintah diagnostik, kawalan risiko, strategi rollback, dan langkah pengesahan untuk membantu jurutera DevOps/SRE menyelesaikan masalah dengan cekap.
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.