Docker ialah enjin kontena aplikasi sumber terbuka yang membolehkan pembangun membungkus, mengedar dan menjalankan sebarang aplikasi dengan cepat, sama ada secara tempatan, dalam awan atau pada peranti mudah alih, menggunakan alat yang sangat baik ini. Ciri terbesar Docker ialah bekas yang menjalankan boleh digunakan dengan cepat ke hos yang berbeza dan konsistensi persekitaran dikekalkan. Disebabkan oleh prestasi cemerlang dan kemudahan penggunaan Docker, ia telah digunakan secara meluas dalam pengkomputeran awan, DevOps, perkhidmatan mikro dan bidang lain. Artikel ini akan memperkenalkan pemetaan port untuk bekas Docker.
Setiap perkhidmatan dalam bekas Docker perlu menduduki nombor port. Jika perkhidmatan yang berjalan di dalam bekas perlu berkomunikasi dengan sistem luaran, maka nombor port ini perlu dipetakan ke port pada hos. Proses ini boleh dipanggil pemetaan port.
Dalam Docker, anda boleh menggunakan perintah docker run
untuk memulakan bekas dan menentukan parameter pemetaan port. Sebagai contoh, dengan mengandaikan bahawa perkhidmatan web sedang berjalan dalam bekas dan port mendengar ialah 8080
, kita boleh menggunakan arahan berikut untuk memetakan port 8080
dalam bekas ke port 8000
hos:
docker run -p 8000:8080 my-web-service
Parameter -p 8000:8080
arahan ini bermaksud memetakan port 8080
dalam bekas ke port 8000
hos. Parameter terakhir my-web-service
menentukan imej Docker untuk dijalankan.
Jika perkhidmatan yang dijalankan dalam bekas perlu mendedahkan berbilang port, anda boleh menambah parameter -p
beberapa kali untuk pemetaan. Sebagai contoh, dengan mengandaikan bahawa perkhidmatan yang berjalan dalam bekas perlu mendengar dua port 8080
dan 8081
pada masa yang sama, kita boleh menggunakan arahan berikut untuk memetakan dua port ini ke port berbeza pada hos:
docker run -p 8000:8080 -p 8001:8081 my-web-service
Parameter -p 8000:8080
arahan ini bermaksud memetakan port 8080
dalam bekas ke port 8000
hos, dan parameter -p 8001:8081
bermaksud memetakan port 8081
dalam bekas ke pelabuhan 8001
hos.
Secara lalai, port yang dipetakan oleh bekas Docker terikat pada semua antara muka kad rangkaian hos. Jika anda ingin menentukan pemetaan ke alamat IP tertentu, anda boleh lulus -p
format parameter:
docker run -p IP:HOST_PORT:CONTAINER_PORT my-web-service
di mana, IP
merujuk kepada alamat IP setempat yang hendak dipetakan dan HOST_PORT
ialah hos Nombor port pada CONTAINER_PORT
ialah nombor port yang sebenarnya didengari oleh perkhidmatan dalam bekas.
Tidak seperti port TCP, port UDP perlu dipetakan menggunakan format parameter -p
. Contohnya, port UDP 8080
dalam bekas boleh dipetakan ke port UDP 8000
hos melalui arahan berikut:
docker run -p 8000:8080/udp my-udp-service
Dalam sesetengah kes, jika tidak perlu memetakan port dalam bekas ke port tetap hos, anda boleh menggunakan parameter -P
untuk menentukan pemetaan port rawak. Sebagai contoh, anda boleh memulakan dan memetakan port perkhidmatan secara automatik melalui arahan berikut:
docker run -P my-web-service
Dalam arahan ini, parameter -P
bermaksud memetakan semua port dalam bekas secara automatik kepada port rawak pada tuan rumah. Docker secara rawak akan memilih port hos yang tidak berpenghuni dan memetakan pelabuhan perkhidmatan dalam bekas kepadanya.
Anda boleh menggunakan perintah docker ps
untuk melihat bekas yang sedang berjalan dan portnya yang dipetakan. Contohnya, anda boleh menggunakan arahan berikut untuk menyenaraikan semua bekas yang sedang berjalan dan port dipetakannya:
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
Arahan ini akan memaparkan ID, nama dan nombor port yang dipetakan bagi setiap bekas.
Pemetaan port Docker mencipta antara muka rangkaian antara bekas dan hos untuk penghantaran data dua arah. Semasa mengkonfigurasi pemetaan port, anda perlu memberi perhatian kepada isu keselamatan rangkaian dan konflik port untuk mengelakkan masalah yang tidak perlu. Saya harap artikel ini dapat membantu pembaca memahami pemetaan port dan konfigurasi rangkaian Docker.
Atas ialah kandungan terperinci Bagaimana untuk memetakan pelabuhan dalam bekas docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!