Senario
Kontena Docker dalam pengeluaran keluar secara tiba-tiba dengan status "Exited (1)". Aplikasi sebelum ini berjalan stabil. Kontena berdasarkan imej tersuai dan menggunakan tetapan runtime lalai.
Gejala
docker psmenunjukkan status kontena sebagai "Exited"docker logs <container>mencetak ralat runtime seperti "exec: permission denied" atau "OCI runtime create failed"- Log sistem (contohnya
journalctl -u docker) menunjukkan ralat containerd atau runc - Kontena gagal dimulakan walaupun selepas restart manual
Langkah Diagnosis
- Periksa log kontena:
docker logs <container>untuk output terkini - Periksa keadaan kontena:
docker inspect <container> --format='{{json .State}}'untuk melihat kod keluar dan mesej ralat - Periksa kesihatan daemon Docker:
systemctl status dockerataujournalctl -u docker -n 100 - Uji runtime asas:
docker run --rm busybox echo testuntuk mengesahkan enjin kontena berfungsi - Periksa had sumber:
docker inspect <container> | jq '.[].HostConfig.Memory'untuk mengesahkan tetapan memori dan CPU - Sahkan integriti imej:
docker run --rm <image> /bin/sh -c 'ls'untuk memastikan imej berfungsi
Arahan Utama
docker logs <container>
docker inspect <container>
docker system df # Periksa penggunaan cakera
journalctl -u docker -n 50 --no-pager
cat /var/log/syslog | grep docker
Kawalan Risiko
- Gunakan
--restart=alwaysatau--restart=on-failureuntuk memulakan semula kontena secara automatik - Tetapkan had sumber (
--memory,--cpus) untuk mengelakkan OOM - Elakkan penggunaan
--privilegedyang tidak perlu - Laksanakan arahan HEALTHCHECK dalam Dockerfile
Prosedur Pemulihan
- Jika versi imej baru menyebabkan masalah, kembali ke tag stabil:
docker pull <image>:stablekemudian buat semula kontena - Jika fail konfigurasi diubah, pulihkan dari sandaran dan restart
- Gunakan
docker commituntuk membuat snapshot keadaan kontena semasa (langkah sementara sahaja)
Langkah Pengesahan
- Selepas memulakan kontena, lihat log:
docker logs -f <container> - Periksa status kontena:
docker pssepatutnya menunjukkan "Up" - Lakukan pemeriksaan kesihatan aplikasi (contohnya titik akhir curl)
- Uji beban untuk memastikan kestabilan di bawah trafik yang dijangka
Bila Menghantar Tiket OpsGlobal
- Penyelesaian masalah asas gagal dan analisis peringkat sistem diperlukan
- Disyaki isu kernel, pemacu storan, atau plugin rangkaian (contohnya overlay)
- Perlu mengubah suai konfigurasi daemon Docker atau menaik taraf versi Docker
- Memerlukan bantuan profesional untuk memulihkan data atau mengoptimumkan prestasi
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu DevOps dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan ini merangkumi isu-isu runtime kontena Docker biasa, termasuk senario, gejala, diagnosis, arahan, kawalan risiko, pemulihan, pengesahan, dan bila untuk menghantar tiket 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.