Senario
Andaikan kontena Docker pengeluaran tiba-tiba keluar, berulang kali dimulakan semula, atau gagal pemeriksaan kesihatan. Punca biasa termasuk kerosakan aplikasi, kekurangan memori (OOM), konfigurasi salah, atau isu imej dasar. Sebagai jurutera DevOps/SRE yang disokong OpsGlobal, anda perlu mendiagnosis dan memulihkan perkhidmatan dengan cepat.
Gejala
- Status kontena menunjukkan
Exited (1)atauRestarting. docker logs <kontena>menunjukkan ralat aplikasi atau mesej keluar.docker inspect <kontena>menunjukkanOOMKilled: true.- Pemeriksaan kesihatan gagal (
docker psmenunjukkanunhealthydalam STATUS). - Metrik sumber (CPU/memori) tidak normal.
Langkah Diagnosis
- Periksa status kontena
bash docker ps -a --filter "name=my-service" - Baca log
bash docker logs --tail 200 my-service - Periksa kod keluar
bash docker inspect my-service --format '{{.State.ExitCode}}'Kod keluar bukan sifar biasanya menunjukkan ralat aplikasi. - Kesan OOM
bash docker inspect my-service --format '{{.State.OOMKilled}}'Jika benar, tingkatkan had memori atau optimumkan aplikasi. - Pantau dengan docker events
bash docker events --filter 'container=my-service' --since 1h - Diagnosis mendalam di peringkat hos
- Periksa log daemon Docker:
journalctl -u docker- Periksa sumber sistem:free -m,top,df -h- Jika menggunakan crictl (runtime serasi CRI):crictl ps,crictl logs <id-kontena>
Arahan Utama
docker container restart my-service: Mulakan semula kontena (pemulihan sementara).docker container stop my-service && docker container start my-service: Mulakan semula langkah demi langkah.docker run --rm -it my-image bash: Kontena interaktif untuk debug.docker stats --no-stream: Penggunaan sumber kontena masa nyata.docker system df: Periksa penggunaan cakera Docker.
Kawalan Risiko
- Jangan padam kontena atau imej tanpa sandaran.
- Pastikan tiada kebergantungan hiliran (cth., sambungan pangkalan data) sebelum menghentikan kontena.
- Gunakan
--restart=on-failureuntuk mengelakkan gelung mulakan semula tidak berkesudahan. - Laraskan had sumber secara berperingkat dan pantau prestasi.
- Maklumkan pasukan sebelum menjalankan arahan diagnosis untuk mengelakkan gangguan.
Prosedur Undur
- Hentikan kontena yang bermasalah:
docker stop my-service - Tarik imej stabil sebelumnya:
docker pull my-registry/my-service:v1.0.0 - Mulakan versi lama:
docker run -d --name my-service-old --restart=always my-registry/my-service:v1.0.0 - Sahkan pemulihan perkhidmatan (lihat di bawah).
- Kemas kini orkestrasi (cth., docker-compose atau Kubernetes) untuk merujuk versi lama.
- Simpan kontena dan log bermasalah untuk analisis selepas kejadian:
docker logs my-service > /tmp/crash.log
Pengesahan
- Periksa status kontena berjalan:
docker ps -f status=running - Sahkan proses dalam kontena:
docker exec my-service ps aux - Hantar permintaan ujian untuk mengesahkan respons aplikasi.
- Pantau log untuk ralat baru:
docker logs --tail 50 my-service - Periksa metrik penggunaan sumber stabil.
Bila Hantar Tiket OpsGlobal
- Kontena kerap keluar tanpa sebab jelas selepas diagnosis asas.
- Perlu debug di peringkat daemon atau nod (cth., isu kernel, kegagalan pemacu storan).
- Gejala serupa muncul pada berbilang nod dalam kluster besar.
- Masalah berterusan selepas undur, atau perlu bina semula imej dan tampung keselamatan.
- Perlu penalaan parameter runtime Docker (cth., ulimit, cgroups).
- Melibatkan keserasian versi Docker atau perancangan naik taraf.
Semasa menghantar tiket, sediakan: ID kontena, coretan log, output docker inspect, maklumat sistem hos, dan garis masa.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu DevOps dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Kuasa kemahiran menyelesaikan masalah runtime kontena Docker dengan diagnosis sistematik, arahan, langkah keselamatan, dan prosedur undur. Ketahui bila perlu hantar tiket sokongan OpsGlobal SRE.
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.