Dalam proses menggunakan Docker untuk penggunaan kontena, masalah biasa ialah cara berkomunikasi antara bekas yang berbeza. Terutama apabila nama domain kontena ini berbeza, cara membiarkan mereka mencari satu sama lain dan berinteraksi menjadi masalah yang perlu diselesaikan.
Artikel ini akan memperkenalkan cara melaksanakan komunikasi antara bekas dengan nama domain yang berbeza dalam Docker. Pertama, kita perlu memahami model rangkaian Docker.
Model rangkaian Docker
Docker menyokong berbilang model rangkaian, termasuk mod Jambatan, mod Hos, mod Tindanan, mod MACVLAN, dsb. Antaranya, yang paling banyak digunakan dalam penggunaan kontena ialah mod Jambatan.
Dalam mod Jambatan, Docker akan mencipta jambatan maya untuk setiap bekas dan memberikan alamat IP kepada setiap bekas. Bekas ini boleh berkomunikasi melalui jambatan maya ini. Pada masa yang sama, Docker juga menyokong menyambungkan bekas ke jambatan rangkaian yang ditentukan pengguna yang sama, supaya mereka boleh berkomunikasi secara langsung melalui jambatan rangkaian yang ditentukan pengguna ini.
Walau bagaimanapun, dalam aplikasi praktikal, kami mendapati bahawa masalah yang perlu diselesaikan ialah bagaimana untuk membiarkan bekas mencari satu sama lain dan berinteraksi apabila nama domain mereka berbeza.
Penyelesaian
Untuk menyelesaikan masalah nama domain yang berbeza antara bekas, kami boleh menggunakan perkhidmatan DNS.
Perkhidmatan DNS Docker sendiri
Docker datang dengan perkhidmatan DNS yang boleh melaksanakan resolusi nama domain untuk bekas. Setiap bekas menghantar permintaan DNS kepada pelayan DNS yang diberikan oleh Docker dan menggunakan nama bekas sebagai nama hos dalam resolusi DNS.
Sebagai contoh, dalam rangkaian Docker, terdapat dua bekas web1 dan web2. Alamat IP mereka ialah 172.17.0.2 dan 172.17.0.3 masing-masing. Jika kami menggunakan mod Bridge lalai, Docker akan memberikan nama domain kepada dua bekas dan nama domain ini boleh digunakan untuk berkomunikasi apabila diakses dalam bekas. Format nama domain ini ialah gabungan nama bekas dan nama rangkaian Docker, serupa dengan web1_default dan web2_default. Di sini lalai ialah nama rangkaian Docker.
Jadi, jika kita menggunakan arahan ping dalam web1 untuk menguji ketersambungan web2, kita boleh menggunakan arahan berikut:
ping web2_default
Arahan ini akan menghantar permintaan DNS ke pelayan DNS diberikan oleh Docker, Dan gunakan web2_default sebagai nama hos untuk menyelesaikannya.
Perkhidmatan DNS tersuai
Jika anda ingin menyesuaikan perkhidmatan DNS, anda boleh menggunakan pilihan --dns Docker untuk menentukan alamat pelayan DNS. Contohnya, jika kita ingin menggunakan pelayan DNS awam Google 8.8.8.8, kita boleh memulakan bekas dengan arahan berikut:
docker run --dns 8.8.8.8 myimage
Ini akan menggunakan 8.8.8.8 sebagai pelayan DNS lalai untuk bekas. Di dalam bekas, pelayan DNS ini boleh digunakan untuk menyelesaikan nama domain.
Jika kami ingin menggunakan DNS tersuai dalam bekas Docker, kami boleh mencipta Fail Docker untuk menambah konfigurasi DNS tersuai pada bekas. Contohnya, dalam Ubuntu, anda boleh menggunakan arahan berikut untuk mengubah suai fail konfigurasi DNS:
RUN echo 'nameserver 8.8.8.8' > /etc/resolv.conf
Ini akan menambah alamat pelayan DNS pada fail /etc/resolv.conf dalam bekas. Di dalam bekas, pelayan DNS ini boleh digunakan untuk menyelesaikan nama domain.
Ringkasan
Melaksanakan komunikasi antara bekas dengan nama domain yang berbeza dalam Docker ialah masalah yang mesti diselesaikan. Dengan menggunakan perkhidmatan DNS Docker sendiri atau perkhidmatan DNS tersuai, kami boleh menyelesaikan masalah ini dengan mudah dan membenarkan komunikasi lancar antara bekas. Pada masa yang sama, untuk keselamatan rangkaian, kami juga boleh menyesuaikan perkhidmatan DNS untuk meningkatkan keselamatan dan melindungi data sensitif dalam bekas.
Atas ialah kandungan terperinci Cara Docker melaksanakan komunikasi antara bekas dengan nama domain yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!