Docker ialah platform yang membolehkan aplikasi dijalankan dalam bekas terpencil dan mudah alih. Ia menggunakan beberapa ciri kernel Linux untuk melaksanakan virtualisasi ringan dan mencapai pengasingan perisian. Atas sebab ini, Docker telah digunakan secara meluas dalam bidang penggunaan perisian kerana bekasnya yang ringan.
Apabila kita menjalankan kontena di Docker, kadangkala kita tidak perlu memetakan port kontena kepada hos. Artikel ini akan memperkenalkan beberapa situasi dan langkah berjaga-jaga apabila menjalankan bekas Docker tanpa pemetaan port.
Dalam sesetengah senario, kes tidak memetakan port mungkin sangat berguna. Situasi yang paling biasa ialah menggunakan Docker untuk menjalankan perkhidmatan latar belakang. Sebagai contoh, kita boleh menggunakan arahan berikut untuk memulakan pelayan Nginx:
docker run -d nginx
Arahan ini akan memulakan bekas Nginx di latar belakang dan memulakan proses Nginx dalam bekas. Walau bagaimanapun, pada masa ini, bekas Nginx tidak memetakan port kontena 80 kepada hos. Ini bermakna kita tidak boleh mengakses contoh Nginx ini dengan mengakses port 80 mesin hos.
Satu lagi senario biasa ialah menggunakan Docker untuk menjalankan beberapa atur cara alat. Kita boleh menggunakan arahan berikut untuk memulakan bekas Ubuntu yang boleh melaksanakan skrip bash:
docker run -it ubuntu bash
Arahan ini akan memulakan bekas Ubuntu dalam mod interaktif dan memasuki proses bash dalam bekas. Pada masa ini, kita tidak perlu memetakan port kontena ke hos.
Walaupun mudah untuk tidak memetakan port dalam sesetengah senario, kita mesti memberi perhatian kepada isu berikut:
Apabila kontena tidak mempunyai port yang dipetakan, kami tidak boleh mengakses kontena melalui hos dan mesin lain dalam rangkaian. Ini bermakna jika kita perlu mengakses aplikasi di dalam bekas dari luar hos, kita mesti memetakan port kontena ke hos.
Walaupun port kontena tidak dipetakan kepada hos, aplikasi yang berjalan dalam bekas masih perlu mendengar pada port. Ini kerana aplikasi di dalam bekas perlu mengendalikan permintaan rangkaian.
Walaupun kami tidak memetakan port kontena kepada hos, bekas itu masih mempunyai keupayaan capaian rangkaian. Ini bermakna aplikasi di dalam bekas boleh mengakses perkhidmatan pada rangkaian lain, seperti pangkalan data atau perkhidmatan web.
Apabila menjalankan kontena di Docker, kita tidak semestinya perlu memetakan port kontena ke hos. Tidak memetakan port mungkin sangat berguna untuk perkhidmatan latar belakang atau beberapa program utiliti. Walau bagaimanapun, perlu diingatkan bahawa jika anda perlu mengakses aplikasi di dalam bekas dari luar, anda mesti memetakan port kontena ke hos. Pada masa yang sama, aplikasi yang berjalan dalam bekas masih perlu mendengar port untuk memastikan ia boleh mengendalikan permintaan rangkaian secara normal.
Atas ialah kandungan terperinci Analisis ringkas tentang sebab dan langkah berjaga-jaga untuk docker run bukan pemetaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!