Rumah Operasi dan penyelenggaraan Docker Bekas buruh pelabuhan tidak boleh dibunuh

Bekas buruh pelabuhan tidak boleh dibunuh

May 13, 2023 pm 02:32 PM

Bekas docker telah menjadi cara standard untuk menggunakan aplikasi moden, terutamanya untuk perusahaan yang menggunakan seni bina perkhidmatan mikro. Walau bagaimanapun, dalam penggunaan sebenar, kita mungkin menghadapi beberapa masalah, seperti bekas tidak boleh dibunuh, dsb. Artikel ini akan memperkenalkan beberapa sebab mengapa bekas tidak boleh dibunuh dan cara menyelesaikan masalah ini.

  1. Penggunaan sumber kontena yang berlebihan

Di dalam bekas Docker, setiap bekas mempunyai CPU, memori dan sumber lain sendiri Apabila sumber digunakan secara berlebihan, sistem mungkin tidak mampu memberi respons tepat pada masanya kepada arahan bunuh. Pada masa ini, anda perlu mematikan proses kontena secara manual, atau menggunakan perintah bunuh dengan parameter -f untuk memaksa berhenti.

Walau bagaimanapun, jika anda tidak mahu mematikan proses bekas secara manual semasa bekas sedang berjalan, terdapat alatan yang boleh membantu anda menghentikan bekas secara automatik. Contohnya menggunakan Perkhidmatan Kontena AWS EC2 atau Kubernetes, alatan ini boleh memantau penggunaan sumber kontena secara automatik dan menghentikan bekas apabila sumber digunakan secara berlebihan.

  1. Masalah yang disebabkan oleh titik lekap antara bekas dan hos

Apabila fail dikongsi antara bekas dan hos, bekas itu memasang fail pada hos Apabila diapit, bekas itu tidak boleh mati. Ini kerana apabila bekas keluar, sistem pengendalian mungkin perlu menunggu operasi I/O sistem fail selesai sebelum menamatkan aplikasi, jika tidak, kerosakan sistem fail mungkin berlaku.

Untuk menyelesaikan masalah ini, kami perlu memastikan bahawa bekas tidak mempunyai sebarang fail yang dibuka untuk ditulis dalam folder kongsi yang dipasang Anda boleh menggunakan perintah lsof untuk melihat fail yang terbuka dalam bekas, dan kemudian tutup fail ini secara manual. Di samping itu, apabila bekas keluar, kami boleh membiarkan hos menyahlekap folder yang dipasang supaya sistem pengendalian tidak menunggu operasi I/O.

  1. Gunakan arahan docker stop dan bukannya docker kill command

Kadangkala kami mungkin menggunakan docker stop command untuk menghentikan proses kontena. Walau bagaimanapun, apabila bekas tidak boleh dihentikan seperti biasa, arahan henti dok boleh menyebabkan masalah Pada masa ini, kita perlu menggunakan perintah bunuh dok untuk menghentikan kontena secara paksa. Kerana arahan bunuh docker boleh menghentikan proses kontena secara paksa tanpa menunggu proses dibersihkan.

Sebelum menggunakan arahan docker kill, kita perlu memastikan bahawa tiada aplikasi yang sedang berjalan dalam bekas, jika tidak, ia boleh menyebabkan masalah seperti kehilangan data atau kebocoran memori.

  1. Subproses dalam bekas

Aplikasi dalam bekas Docker boleh mencipta subproses mereka sendiri dan subproses ini boleh menghalang proses kontena daripada dimatikan. Kerana apabila proses induk keluar, proses anak mungkin menjadi "proses yatim", dan sistem pengendalian boleh memindahkan proses yatim ke proses init dan terus berjalan Dalam kes ini, bekas tidak boleh dimatikan.

Terdapat dua cara untuk menyelesaikan masalah ini: satu ialah menyediakan mekanisme pemprosesan isyarat semasa menjalankan aplikasi dalam bekas Apabila proses kontena menerima isyarat bunuh, ia menghantar isyarat kepada proses anak biarkan proses anak juga keluar Dengan cara ini Ini membolehkan proses kontena keluar dengan lancar; yang kedua ialah menggunakan perintah bunuh buruh untuk membunuh secara paksa proses kontena, supaya proses anak juga akan ditamatkan.

  1. Benang dalam bekas

Aplikasi dalam bekas mungkin menggunakan berbilang benang dan benang ini mungkin menghalang bekas daripada mati. Kerana apabila proses kontena tamat, benang mungkin terus berjalan, menyebabkan proses kontena tidak dapat keluar.

Untuk menyelesaikan masalah ini, kita perlu menyemak semua benang dalam bekas untuk memastikan bahawa benang telah keluar. Anda boleh menggunakan arahan strace atau perintah lsmod untuk menyenaraikan semua benang dalam bekas dan kemudian menghentikan benang ini secara manual.

Ringkasan

Apabila menggunakan bekas Docker, tidak dapat membunuh bekas adalah masalah biasa. Artikel ini memperkenalkan beberapa sebab mengapa bekas tidak boleh dibunuh dan cara menyelesaikan masalah ini. Saya harap penyelesaian ini dapat membantu dan menghalang anda daripada menghadapi masalah yang sama apabila menggunakan bekas Docker.

Atas ialah kandungan terperinci Bekas buruh pelabuhan tidak boleh dibunuh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Soalan Temuduga Docker: Ace Wawancara Kejuruteraan DevOps Anda Soalan Temuduga Docker: Ace Wawancara Kejuruteraan DevOps Anda Apr 06, 2025 am 12:01 AM

Docker adalah kemahiran yang mesti ada untuk jurutera DevOps. 1.Docker adalah platform kontena sumber terbuka yang mencapai pengasingan dan mudah alih dengan aplikasi pembungkusan dan kebergantungan mereka ke dalam bekas. 2. Docker bekerja dengan ruang nama, kumpulan kawalan dan sistem fail bersekutu. 3. Penggunaan asas termasuk mencipta, menjalankan dan menguruskan bekas. 4. Penggunaan lanjutan termasuk menggunakan DockerCompose untuk menguruskan aplikasi multi-kontainer. 5. Kesilapan umum termasuk kegagalan kontena, masalah pemetaan pelabuhan, dan masalah ketekunan data. Kemahiran penyahpepijatan termasuk log melihat, memasukkan bekas, dan melihat maklumat terperinci. 6. Pengoptimuman prestasi dan amalan terbaik termasuk pengoptimuman imej, kekangan sumber, pengoptimuman rangkaian dan amalan terbaik untuk menggunakan Dockerfile.

Jilid Docker: Menguruskan data berterusan dalam bekas Jilid Docker: Menguruskan data berterusan dalam bekas Apr 04, 2025 am 12:19 AM

Dockervolumes memastikan data tetap selamat apabila bekas dimulakan semula, dipadam, atau berhijrah. 1. Buat Jilid: DockervolumecreatemyData. 2. Jalankan bekas dan gunung: dockerrun-it-vmydata:/app/dataubuntubash. 3. Penggunaan lanjutan termasuk perkongsian data dan sandaran.

Cara mengemas kini imej Docker Cara mengemas kini imej Docker Apr 15, 2025 pm 12:03 PM

Langkah -langkah untuk mengemas kini imej Docker adalah seperti berikut: Tarik tag imej terkini imej baru memadam imej lama untuk tag tertentu (pilihan) mulakan semula bekas (jika diperlukan)

Cara keluar dari bekas dengan Docker Cara keluar dari bekas dengan Docker Apr 15, 2025 pm 12:15 PM

Empat cara untuk keluar dari Docker Container: Gunakan Ctrl D di terminal kontena masukkan perintah keluar di terminal kontena Gunakan Docker Stop & lt; container_name & gt; Perintah Gunakan Docker Kill & lt; container_name & gt; Perintah di terminal tuan rumah (keluar kuasa)

Cara menyalin fail di Docker ke luar Cara menyalin fail di Docker ke luar Apr 15, 2025 pm 12:12 PM

Kaedah untuk menyalin fail ke tuan rumah luaran di Docker: Gunakan arahan CP Docker: Jalankan Docker CP [Options] & lt; Container Path & GT; & lt; PATH HOST & GT;. Menggunakan jumlah data: Buat direktori pada tuan rumah, dan gunakan parameter -V parameter untuk memasang direktori ke dalam bekas apabila membuat bekas untuk mencapai penyegerakan fail bidirectional.

Cara memulakan semula Docker Cara memulakan semula Docker Apr 15, 2025 pm 12:06 PM

Cara memulakan semula bekas Docker: Dapatkan ID Container (Docker PS); Hentikan bekas (Docker Stop & lt; container_id & gt;); Mulakan bekas (Docker Start & lt; container_id & gt;); Sahkan bahawa permulaan semula berjaya (Docker PS). Kaedah lain: Docker mengarang (Docker-Compose Restart) atau Docker API (lihat Dokumentasi Docker).

Docker Security Hardening: Melindungi bekas anda dari kelemahan Docker Security Hardening: Melindungi bekas anda dari kelemahan Apr 05, 2025 am 12:08 AM

Kaedah Peningkatan Keselamatan Docker termasuk: 1. Gunakan parameter-cap-drop untuk menghadkan keupayaan Linux, 2. Buat bekas baca sahaja, 3 set tag Selinux. Strategi ini melindungi bekas dengan mengurangkan pendedahan kelemahan dan mengehadkan keupayaan penyerang.

Cara memeriksa nama bekas Docker Cara memeriksa nama bekas Docker Apr 15, 2025 pm 12:21 PM

Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

See all articles