Exemple de réseautage de base sur la façon de connecter les conteneurs Docker

Exemple de réseautage de base sur la façon de connecter les conteneurs Docker

L'une des nombreuses fonctionnalités souhaitables intégrées directement à Docker est le réseautage. La fonction de réseautage de Docker est accessible en utilisant un --lien Indicateur qui permet de connecter un nombre de conteneurs Docker sans avoir besoin d'exposer les ports internes d'un conteneur vers le monde extérieur.

Dans ce guide, vous apprendrez à réseauter deux ou plusieurs conteneurs Docker sur un système Linux via des instructions de ligne de commande. Cela fonctionnera sur n'importe quelle distribution Linux. Consultez les instructions étape par étape ci-dessous pour savoir comment.

Dans ce tutoriel, vous apprendrez:

  • Comment réseauter les conteneurs docker ensemble
Relier deux conteneurs Docker ensemble via le réseautage sur Linux Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Toute distribution Linux
Logiciel Docker
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Connecter des conteneurs Docker via le réseautage



  1. Dans cette configuration, vous apprendrez à relier deux ou plusieurs conteneurs Docker en utilisant une technique de réseautage Docker simple. Nous pouvons commencer par le déploiement de notre premier conteneur Docker, nommé sanbox1, à quoi nous créerons plus tard un lien réseau:
    # docker run -it --name sandbox1 -h sanbox1 Linuxconfig / sandbox / bin / bash 

    Il n'y a rien de nouveau dans la commande ci-dessus, sauf pour noter que nous n'exposons aucun port réseau même si notre intention est d'accéder aux services (SSH, connexion de la base de données, etc.) via leurs numéros de port pertinents.

  2. La commande Linux suivante déploiera une seconde et cette fois un conteneur de docker parent nommé nommé bac à sable2. Nous utiliserons également un --lien Indicateur qui créera une relation soi-disant parent-enfant avec un conteneur précédemment déployé bac à sable1. De plus, le --lien Flag permettra au conteneur parent d'accéder à tous les services exécutés bac à sable1 conteneur via ses numéros de ports correspondants sans la nécessité du conteneur enfant d'exposer des ports vers le monde extérieur.
    # docker run -it --name sandbox2 -h sandbox2 - link sandbox1: sandbox1 linuxconfig / sandbox / bin / bash 

    La commande docker ci-dessus a utilisé le --lien drapeau qui attend deux arguments séparés par un côlon. Le premier argument devrait être un identifiant de conteneur ou comme dans notre cas un fourni bac à sable1 nom de conteneur que nous aimerions lier à. Le deuxième argument, aussi bac à sable1, est un alias interne utilisé par bac à sable2 résoudre bac à sable1Configuration réseau en utilisant le / etc / hôtes fichier de configuration:



    # grep sandbox1 / etc / hôte 172.17.0.41 Sandbox1 
  3. Selon la configuration des ports de votre conteneur enfant utilisé, vous pouvez également extraire bac à sable1Configuration des variables d'environnement du système. Par exemple:
    # env hostname = sandbox2 term = xterm sandbox1_port = tcp: // 172.17.0.37: 7555 sandbox1_port_7555_tcp = tcp: // 172.17.0.37: 7555 path = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin pwd = / sandbox1_port_755_tcp_addr = 172.17.0.37 sandbox1_port_7555_tcp_proto = tcp shlvl = 1 home = / root sandbox1_name = / sandbox2 / sandbox1 sandbox1_port_7555_tcp_port = 7555 _ = / usr / bin / env / env 
  4. De cette façon, nous pouvons simplement utiliser l'alias de notre conteneur pour enfants pour nous y connecter à partir d'un conteneur parent bac à sable2 Sans avoir besoin de cocoter son adresse IP:
    # ping -c 1 sandbox1 ping sandbox1 (172.17.0.41): 56 octets de données 64 octets de 172.17.0.41: icmp_seq = 0 ttl = 64 Time = 0.071 MS --- Sandbox1 Ping Statistics --- 1 paquets transmis, 1 paquets reçus, 0% Pled de paquet aller-retour min / avg / max / stddev = 0.071/0.071/0.071/0.000 ms 


    et également accéder à tous les ports et services:

    # nmap -p 22 sandbox1 Démarrage Nmap 6.47 (http: // nmap.org) au 2015-05-18 08:58 UTC NMAP Scan Rapport pour sandbox1 (172.17.0.41) L'hôte est en place (0.000090S latence). Port State Service 22 / TCP Open SSH MAC Adresse: 02: 42: AC: 11: 00: 29 (inconnu) NMAP FAIT: 1 Adresse IP (1 hôte) scanné en 0.50 secondes 
Nous sommes en mesure de communiquer du conteneur Sandbox1 à Sandbox2, comme en témoigne la commande ping

C'est tout ce qu'on peut en dire. Nos deux conteneurs peuvent désormais communiquer entre eux et des services comme SSH travaillent entre eux. Vous pouvez appliquer cette même configuration à deux ou plusieurs conteneurs Docker que vous devez réseauter ensemble.

Réflexions de clôture

Dans ce guide, nous avons vu comment relier les conteneurs Docker sur un système Linux. Il s'agit d'une tâche relativement basique qui est facilitée par Docker --lien option. Avoir la capacité de réseauter deux ou plusieurs conteneurs Docker augmente considérablement la puissance et l'utilité de Docker.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Comment créer, gérer et exposer un service à Kubernetes
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Comment se connecter à Docker Container via SSH
  • Comment créer une pile de lampe basée sur Docker à l'aide de Docker sur…
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Comment définir ou modifier l'indicateur de partition de démarrage sur Linux
  • Comment afficher / vérifier les ports ouverts sur Ubuntu Linux
  • Comment utiliser un fichier comme clé de périphérique LUKS
  • Installez Arch Linux dans VMware Workstation