Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Apakah yang perlu saya lakukan jika proses docker tidak dapat dihentikan?

Apakah yang perlu saya lakukan jika proses docker tidak dapat dihentikan?

PHPz
PHPzasal
2023-04-18 14:06:592320semak imbas

Docker ialah teknologi kontena sumber terbuka yang telah digunakan secara meluas dalam pengkomputeran awan, perkhidmatan mikro dan medan DevOps. Ia memudahkan penggunaan dan pengurusan aplikasi dengan ketara dengan membenarkan pembangun membina dan menggunakan aplikasi dengan mencipta, menjalankan dan mengurus bekas.

Walau bagaimanapun, apabila menggunakan Docker, sesetengah pengguna mungkin menghadapi masalah bahawa proses itu tidak boleh dihentikan. Artikel ini akan menyelidiki punca masalah dan menyediakan beberapa penyelesaian yang berkesan.

Simptom masalah

Apabila menggunakan Docker, kadangkala kita akan dapati proses dalam bekas Docker tidak boleh dihentikan. Khususnya, selepas menggunakan perintah docker stop atau docker kill, proses dalam bekas tidak dimatikan dan status kontena masih berjalan.

Selepas banyak percubaan dengan arahan docker stop dan docker kill, proses itu masih tidak dapat ditamatkan, menyebabkan pengguna sangat keliru.

Punca masalah

Sebab masalah ini sebenarnya sangat mudah: proses dalam bekas Docker berkemungkinan besar akan diuruskan oleh proses Penyelia. Dalam kes ini, jika anda menggunakan perintah docker stop atau docker kill untuk menamatkan bekas, hanya proses Penyelia akan dihentikan, bukan proses itu sendiri. Itulah sebabnya anda akan mendapati bahawa status kontena masih berjalan.

Penyelesaian

  1. Belajar menggunakan ps untuk melihat maklumat proses

Untuk menyelesaikan masalah bahawa proses Docker tidak dapat dihentikan, kita perlu belajar menggunakan arahan ps untuk melihat maklumat proses. Dalam bekas Docker, gunakan arahan ps untuk melihat proses yang sedang dijalankan Perintah khusus adalah seperti berikut:

docker exec -it [CONTAINER_ID] ps aux

di mana CONTAINER_ID ialah ID bekas, gunakan arahan ps docker untuk mendapatkannya.

  1. Gunakan bunuh untuk menamatkan proses secara terus

Selepas kita menentukan proses PID pada proses Penyelia, kita boleh menggunakan arahan bunuh untuk menamatkan proses secara terus. Arahan khusus adalah seperti berikut:

docker exec -it [CONTAINER_ID] kill [PID]

di mana PID ialah PID proses, diperoleh melalui arahan ps.

  1. Konfigurasikan fail konfigurasi Penyelia

Jika anda ingin menyelesaikan masalah dengan lebih teliti bahawa proses Docker tidak dapat dihentikan, maka kami perlu mengkonfigurasi fail konfigurasi proses Penyelia dalam bekas Docker Tambah pilihan berikut:

stopasgroup=true
killasgroup=true

Dua pilihan ini boleh memastikan proses Penyelia dan semua proses di bawahnya boleh dimatikan sepenuhnya apabila arahan henti dok atau bunuh dok dilaksanakan.

Dalam fail konfigurasi Penyelia, anda boleh menambah pilihan melalui arahan berikut:

[program:program_name]
command=/path/to/program
stopasgroup=true
killasgroup=true

dengan nama_program ialah nama program dan /path/to/program ialah laluan program.

Akhir sekali, mulakan semula proses Penyelia dalam bekas Docker.

  1. Gunakan docker-compose untuk memulakan bekas

Selain kaedah di atas, anda juga boleh menggunakan docker-compose untuk memulakan bekas Docker dan tambah arahan kill untuk menamatkan semua proses dalam bekas untuk mengelakkan Proses tidak boleh dihentikan.

version: '3'
services:
  your_service:
    build: .
    command: ["tail", "-f", "/dev/null"]
    stop_signal: SIGKILL

Dalam fail karang docker ini, kami menggunakan isyarat SIGKILL untuk mematikan semua proses dalam bekas.

Ringkasan

Ketidakupayaan untuk menghentikan proses Docker adalah masalah biasa, tetapi penyelesaiannya agak mudah. Kita boleh menyelesaikan masalah dengan menggunakan arahan ps untuk melihat maklumat proses, menggunakan perintah bunuh untuk menamatkan proses secara terus, konfigurasikan fail konfigurasi Penyelia atau gunakan docker-compose untuk memulakan bekas dan menambah arahan bunuh.

Tidak kira kaedah yang digunakan, anda boleh menyelesaikan masalah bahawa proses Docker tidak dapat dihentikan dan memastikan operasi normal bekas Docker anda.

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika proses docker tidak dapat dihentikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn