Docker ialah enjin kontena aplikasi sumber terbuka yang boleh membantu pembangun mencipta, menggunakan dan menjalankan aplikasi dengan lebih mudah. Walau bagaimanapun, kadangkala apabila menggunakan Docker, kami menghadapi masalah yang kontena tidak boleh dijalankan di latar belakang. Artikel ini akan membincangkan punca dan penyelesaian kepada masalah ini.
Mula-mula, mari kita lihat cara bekas Docker berjalan di latar belakang. Docker menggunakan teknologi sistem Linux asli seperti cgroup dan ruang nama untuk mengasingkan bekas supaya mereka mempunyai persekitaran operasi yang agak bebas daripada hos. Apabila kami menggunakan arahan Docker untuk menjalankan bekas, Docker mencipta proses untuk memulakan bekas dan menyambungkan input, output dan output ralat standard kontena ke terminal hos. Jika kita mahu bekas berjalan di latar belakang, kita perlu meminta Docker menyambungkan input dan output ini ke terminal maya dan bukannya terminal hos. Ini boleh dicapai dengan menambah parameter -d:
docker run -d image-name
Dengan cara ini, Docker akan menyambungkan input, output dan output ralat standard kontena ke terminal maya dan menjalankan bekas di latar belakang.
Namun, kadangkala kita akan mendapati bekas itu tidak berjaya berjalan di latar belakang, tetapi berhenti serta-merta. Mungkin terdapat beberapa sebab untuk ini:
Jika bekas tidak mempunyai proses latar belakang yang sedang berjalan, maka ia akan berhenti serta-merta. Ini biasanya disebabkan oleh memulakan bekas tanpa menentukan proses untuk dijalankan. Sebagai contoh, arahan berikut tidak mencipta proses latar belakang:
docker run -d ubuntu
Ini kerana kami tidak menyatakan proses yang ingin kami jalankan di dalam bekas. Kita boleh menyelesaikan masalah ini dengan menambahkan arahan untuk dijalankan selepas arahan:
docker run -d ubuntu /bin/bash
Arahan ini akan memulakan terminal Bash dalam bekas Ubuntu, yang akan menjadi proses latar belakang.
Jika ralat berlaku semasa memulakan bekas, ia akan berhenti serta-merta. Ini mungkin disebabkan oleh isu konfigurasi atau pergantungan dengan program di dalam bekas. Kami boleh melihat log bekas untuk mencari mesej ralat dan cuba menyelesaikan masalah tersebut. Contohnya:
docker logs container-name
Perintah ini akan memaparkan maklumat log bekas Kita boleh menggunakan log untuk mengetahui sebab bekas gagal dimulakan, dan kemudian membuat pembaikan yang disasarkan.
Jika aplikasi dalam bekas menggunakan port yang diduduki, ia akan gagal dimulakan. Kita boleh melihat log bekas untuk mencari mesej ralat dan cuba menyelesaikan konflik. Contohnya:
docker logs container-name
Jika log menunjukkan bahawa port telah diduduki, kita boleh cuba menukar port aplikasi atau menghentikan aplikasi yang menduduki port untuk menjadikannya percuma.
Jika bekas tidak mempunyai sumber yang mencukupi, seperti memori atau CPU, ia mungkin tidak dimulakan atau berjalan dengan betul. Kita boleh cuba menyelesaikan masalah ini dengan meningkatkan had sumber bekas atau mengurangkan penggunaan sumber aplikasi dalam bekas.
Ringkasnya, apabila bekas Docker tidak dapat berjalan di latar belakang, kita perlu mencari puncanya terlebih dahulu dan cuba menyelesaikan masalah tersebut. Dengan menyemak log kontena dan menyelesaikan masalah punca masalah, kami dapat menyelesaikan masalah bekas yang tidak berjalan di latar belakang dengan cepat dan memastikan bekas itu berjalan seperti biasa.
Atas ialah kandungan terperinci Bekas docker tidak boleh berjalan di latar belakang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!