Dengan populariti dan perkembangan teknologi kontena, Docker telah menjadi peneraju dalam teknologi kontena dan alat yang sangat diperlukan untuk banyak pembangun dan kakitangan operasi dan penyelenggaraan. Dalam aplikasi praktikal, kita selalunya perlu mendedahkan perkhidmatan dalam Docker kepada rangkaian luaran untuk akses Dalam kes ini, kita perlu menggunakan konfigurasi rangkaian dan pemetaan port Docker.
1. Konfigurasi rangkaian Docker
Terdapat empat jenis rangkaian Docker: rangkaian jambatan, rangkaian hos, tiada rangkaian dan rangkaian tersuai. Apabila menggunakan Docker untuk pembangunan dan penggunaan perkhidmatan, kami biasanya menggunakan jenis rangkaian tersuai, yang boleh mengawal komunikasi antara bekas dengan lebih baik.
Konfigurasi rangkaian tersuai Docker biasanya termasuk nama rangkaian, pemacu rangkaian, IP subnet dan get laluan, dsb. Antaranya, pemacu rangkaian termasuk bridge, overlay, macvlan dan jenis lain untuk dipilih. Jika berbilang bekas perlu mengakses satu sama lain, mereka mesti berada dalam rangkaian tersuai yang sama supaya bekas boleh berkomunikasi antara satu sama lain melalui nama kontena atau ID bekas.
Seterusnya, kami akan memperkenalkan cara membuat rangkaian tersuai dalam Docker dan cara menambah bekas perkhidmatan ke rangkaian yang ditentukan.
Kami boleh mencipta rangkaian tersuai dengan menyatakan nama rangkaian semasa mencipta bekas melalui alat baris arahan Docker. Perintah khusus ialah:
docker network create --driver bridge <network_name>
di mana, <network_name>
ialah nama rangkaian yang perlu dibuat.
Jika anda perlu menambah bekas pada rangkaian yang ditentukan, anda boleh menggunakan pilihan --network bagi arahan docker run . Perintah khusus ialah:
docker run --name <container_name> --network <network_name> <image_name>
di mana <container_name>
ialah nama bekas, <network_name>
ialah nama rangkaian yang akan ditambah dan <image_name>
ialah nama imej bekas.
2. Pemetaan port Docker
Perkhidmatan dalam bekas Docker hanya boleh diakses di dalam bekas secara lalai jika anda perlu membenarkan rangkaian luaran mengakses perkhidmatan melalui alamat IP dan nombor port, anda perlu melakukan pemetaan Port. Biasanya terdapat dua cara pemetaan port untuk Docker: pemetaan port statik dan pemetaan port dinamik.
Pemetaan port statik biasanya ditetapkan apabila memulakan bekas. Kita boleh mengikatnya bersama-sama menggunakan parameter
docker run -p <host_port>:<container_port> <image_name>
Sebagai contoh, petakan port 8080 hos ke port 80 dalam bekas:
docker run -p 8080:80 nginx
Dalam kes ini, kita boleh mengaksesnya melalui penyemak imbashttp://localhost:8080
untuk mengakses perkhidmatan dalam bekas.
Pemetaan port dinamik biasanya dilakukan dengan memperuntukkan port tidak berpenghuni secara automatik pada hos. Kita boleh menggunakan pilihan arahan -P atau -p
docker run -P <image_name>
atau:
docker run -p <container_port> <image_name>
Contohnya, gunakan pilihan -P untuk memulakan bekas Tomcat dan Docker akan memperuntukkan port yang tidak diduduki secara automatik pada hos untuk pemetaan:
docker run -d -P tomcat
Dalam kes ini, kita boleh menggunakan perintah docker ps -a
untuk melihat nombor port yang dipetakan, dan kemudian mengakses perkhidmatan melalui penyemak imbas dengan mengakses alamat IP hos dan nombor port yang ditetapkan.
3. Kesimpulan
Melalui konfigurasi rangkaian dan pemetaan port, kami boleh mendedahkan perkhidmatan dalam bekas Docker kepada rangkaian luaran untuk akses. Perlu diingatkan bahawa keselamatan mesti diberi perhatian apabila melakukan konfigurasi rangkaian Docker dan pemetaan port untuk mengelak daripada mendedahkan perkhidmatan dalam bekas kepada persekitaran rangkaian luaran, dengan itu mengelakkan risiko keselamatan.
Atas ialah kandungan terperinci Bagaimana untuk mengakses perkhidmatan dalam docker dari rangkaian luaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!