Docker et Linux : Comment implémenter la communication réseau entre conteneurs ?

WBOY
Libérer: 2023-07-28 23:38:09
original
1748 Les gens l'ont consulté

Docker et Linux : Comment implémenter la communication réseau entre conteneurs ?

Citation :
La technologie des conteneurs joue un rôle important dans le développement et le déploiement d'applications modernes. En utilisant la technologie des conteneurs, nous pouvons regrouper l'application et ses dépendances dans un conteneur indépendant, garantissant ainsi la portabilité et la cohérence de l'application. Cependant, lorsque nous devons connecter plusieurs conteneurs pour permettre la communication réseau, la configuration de la communication réseau entre les conteneurs devient très importante. Cet article explique comment implémenter la communication réseau entre les conteneurs dans les environnements Docker et Linux.

  1. Modes réseau dans Docker
    Docker propose quatre modes réseau différents pour prendre en charge la communication réseau du conteneur, à savoir :
  2. Mode pont (bridge) : dans le mode par défaut, le conteneur se connecte au réseau hôte via un pont virtuel.
  3. Mode hôte (hôte) : Le conteneur utilise directement le réseau hôte sans isolation réseau.
  4. mode aucun : Le conteneur n’a pas d’interface réseau et est complètement isolé du réseau externe.
  5. Mode conteneur (conteneur) : les conteneurs partagent un espace de noms réseau et peuvent accéder directement à d'autres conteneurs.
  6. Exemple de communication réseau entre conteneurs
    Ensuite, nous utiliserons un exemple simple pour démontrer comment implémenter une communication réseau entre conteneurs dans des environnements Docker et Linux. Supposons que nous ayons deux conteneurs, l'un est un conteneur Web et l'autre est un conteneur de base de données. Nous espérons que le conteneur Web pourra accéder à la base de données fournie par le conteneur de base de données.

Tout d'abord, nous devons créer un réseau de communication entre les conteneurs. Nous pouvons créer un réseau pont nommé my_network à l'aide de la commande suivante :

$ docker network create my_network
Copier après la connexion

Ensuite, nous devons créer et exécuter le conteneur Web pour fournir des services Web. Nous pouvons utiliser la commande suivante pour créer un conteneur nommé web_container et le connecter au réseau my_network :

$ docker run -d --name web_container --network my_network web_image
Copier après la connexion

Où, web_image est l'image du conteneur Web que nous avons nous-mêmes construite.

Ensuite, nous devons créer et exécuter le conteneur de base de données pour fournir des services de base de données. Nous pouvons utiliser la commande suivante pour créer un conteneur nommé db_container et le connecter au réseau my_network :

$ docker run -d --name db_container --network my_network db_image
Copier après la connexion

Parmi eux, db_image est l'image du conteneur db que nous avons nous-mêmes construite.

Maintenant, nous avons créé deux conteneurs et les avons connectés au même réseau. Ensuite, nous devons nous assurer que le conteneur Web peut accéder à la base de données fournie par le conteneur de base de données.

Dans le conteneur web, nous pouvons utiliser le nom de db_container pour y accéder. Par exemple, nous pouvons utiliser la chaîne de connexion suivante dans le code du conteneur Web pour nous connecter à la base de données :

jdbc:mysql://db_container:3306/my_database
Copier après la connexion

Dans cette chaîne de connexion, db_container est le nom du conteneur de base de données, 3306 est le numéro de port par défaut de la base de données, et my_database est le nom de la base de données.

Grâce aux étapes ci-dessus, nous avons réussi à implémenter la communication réseau entre le conteneur Web et le conteneur de base de données. Le conteneur Web peut accéder au service de base de données fourni par le conteneur de base de données via le nom du conteneur.

Conclusion :
Dans les environnements Docker et Linux, nous pouvons réaliser une communication réseau entre les conteneurs en configurant le mode réseau et en créant un réseau. En configurant correctement les connexions réseau, nous pouvons établir des canaux de communication entre les conteneurs, permettant un déploiement multi-conteneurs et une architecture distribuée des applications.

Exemple de code :

Dockerfile pour le conteneur Web :

FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y apache2
EXPOSE 80
CMD ["apache2ctl", "-D", "FOREGROUND"]
Copier après la connexion

Dockerfile pour le conteneur de base de données :

FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y mysql-server
EXPOSE 3306
CMD ["mysqld"]
Copier après la connexion

Exemple de code Java dans le conteneur 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();
        }
    }
}
Copier après la connexion

Ce qui précède explique comment implémenter la communication réseau entre les conteneurs dans les environnements Docker et Linux Introduction et des exemples. Avec une configuration réseau et des paramètres de connexion appropriés, nous pouvons facilement communiquer entre les conteneurs et créer des architectures d'applications plus flexibles et évolutives.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!