Docker dan Linux: Bagaimana untuk melaksanakan komunikasi rangkaian antara bekas?
Petikan:
Teknologi kontena memainkan peranan penting dalam pembangunan dan penggunaan aplikasi moden. Dengan menggunakan teknologi kontena, kami boleh membungkus aplikasi dan kebergantungannya ke dalam bekas bebas, dengan itu memastikan kemudahalihan dan ketekalan aplikasi. Walau bagaimanapun, apabila kita perlu menyambungkan berbilang bekas untuk membolehkan komunikasi rangkaian, mengkonfigurasi komunikasi rangkaian antara bekas menjadi sangat penting. Artikel ini akan memperkenalkan cara melaksanakan komunikasi rangkaian antara bekas dalam persekitaran Docker dan Linux.
Pertama, kita perlu mencipta rangkaian untuk komunikasi antara kontena. Kita boleh mencipta rangkaian jambatan bernama my_network menggunakan arahan berikut:
$ docker network create my_network
Seterusnya, kita perlu mencipta dan menjalankan bekas web untuk menyediakan perkhidmatan web. Kita boleh menggunakan arahan berikut untuk mencipta bekas bernama web_container dan menyambungkannya ke rangkaian_my_network:
$ docker run -d --name web_container --network my_network web_image
Di mana, web_image ialah imej bekas web yang kami bina sendiri.
Kemudian, kita perlu mencipta dan menjalankan bekas db untuk menyediakan perkhidmatan pangkalan data. Kita boleh menggunakan arahan berikut untuk mencipta bekas bernama db_container dan menyambungkannya ke rangkaian my_network:
$ docker run -d --name db_container --network my_network db_image
Antaranya, db_image ialah imej bekas db yang kami bina sendiri.
Kini kami telah mencipta dua bekas dan menyambungkannya ke rangkaian yang sama. Seterusnya, kita perlu memastikan bahawa bekas web boleh mengakses pangkalan data yang disediakan oleh bekas db.
Dalam bekas web, kita boleh menggunakan nama db_container untuk mengaksesnya. Sebagai contoh, kita boleh menggunakan rentetan sambungan berikut dalam kod dalam bekas web untuk menyambung ke pangkalan data:
jdbc:mysql://db_container:3306/my_database
Dalam rentetan sambungan ini, db_container ialah nama bekas db, 3306 ialah nombor port lalai pangkalan data, dan my_database ialah nama pangkalan data .
Melalui langkah di atas, kami telah berjaya melaksanakan komunikasi rangkaian antara bekas web dan bekas db. Bekas web boleh mengakses perkhidmatan pangkalan data yang disediakan oleh bekas db melalui nama bekas.
Kesimpulan:
Dalam persekitaran Docker dan Linux, kami boleh mencapai komunikasi rangkaian antara bekas dengan mengkonfigurasi mod rangkaian dan mencipta rangkaian. Dengan menyediakan sambungan rangkaian dengan betul, kami boleh mewujudkan saluran komunikasi antara bekas, membolehkan penggunaan berbilang bekas dan seni bina aplikasi yang diedarkan.
Contoh kod:
Fail Docker untuk bekas web:
FROM ubuntu:latest RUN apt-get update RUN apt-get install -y apache2 EXPOSE 80 CMD ["apache2ctl", "-D", "FOREGROUND"]
Fail Docker untuk bekas db:
FROM ubuntu:latest RUN apt-get update RUN apt-get install -y mysql-server EXPOSE 3306 CMD ["mysqld"]
Sampel kod Java dalam bekas web:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Main { public static void main(String[] args) { String url = "jdbc:mysql://db_container:3306/my_database"; String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { String query = "SELECT * FROM my_table"; ResultSet rs = stmt.executeQuery(query); while (rs.next()) { System.out.println(rs.getString("column1")); } } catch (SQLException e) { e.printStackTrace(); } } }
Di atas adalah mengenai cara melaksanakan komunikasi rangkaian dan persekitaran Linux dalam Docker dan contoh. Dengan konfigurasi rangkaian dan tetapan sambungan yang betul, kami boleh berkomunikasi dengan mudah antara bekas dan membina seni bina aplikasi yang lebih fleksibel dan berskala.
Atas ialah kandungan terperinci Docker dan Linux: Bagaimana untuk melaksanakan komunikasi rangkaian antara bekas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!