Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Docker dan Linux: Bagaimana untuk melaksanakan komunikasi rangkaian antara bekas?

Docker dan Linux: Bagaimana untuk melaksanakan komunikasi rangkaian antara bekas?

WBOY
WBOYasal
2023-07-28 23:38:091715semak imbas

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.

  1. Mod rangkaian dalam Docker
    Docker menyediakan empat mod rangkaian berbeza untuk menyokong komunikasi rangkaian kontena, iaitu:
  2. Mod jambatan (jambatan): Dalam mod lalai, bekas bersambung ke rangkaian hos melalui jambatan maya.
  3. Mod hos (hos): Bekas menggunakan rangkaian hos secara langsung tanpa pengasingan rangkaian.
  4. mod tiada: Bekas tidak mempunyai antara muka rangkaian dan diasingkan sepenuhnya daripada rangkaian luaran.
  5. Mod bekas (bekas): Bekas berkongsi ruang nama rangkaian dan boleh terus mengakses bekas lain.
  6. Contoh komunikasi rangkaian antara bekas
    Seterusnya, kami akan menggunakan contoh mudah untuk menunjukkan cara melaksanakan komunikasi rangkaian antara bekas dalam persekitaran Docker dan Linux. Katakan kita mempunyai dua bekas, satu bekas web dan satu lagi bekas db Kami berharap bekas web boleh mengakses pangkalan data yang disediakan oleh bekas db.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn