Fermer

juin 3, 2021

Docker Bootcamp – Lier plusieurs conteneurs, partie 2


Bienvenue à Docker Bootcamp. Dans cet article, nous reviendrons sur le sujet de liaison de plusieurs conteneurs. Nous découvrirons comment lier des conteneurs à l'aide des fonctionnalités réseau de Docker dont nous avons parlé dans les articles précédents.

Dans la première partie nous avons utilisé l'indicateur de lien pour connecter deux conteneurs. L'indicateur de lien est considéré comme une fonctionnalité héritée et pourrait éventuellement être supprimé. L'indicateur de lien était pratique car il ne vous obligeait pas à exposer le conteneur source au réseau. Toutes les communications ont eu lieu en arrière-plan. Le conteneur source partage toutes ses variables d'environnement avec tous les conteneurs liés.

Cela peut entraîner des problèmes de sécurité si des variables d'environnement contiennent des secrets tels que des mots de passe. La liaison des conteneurs avec l'indicateur de lien repose sur le nom des conteneurs et l'ordre dans lequel ils sont démarrés. Les conteneurs sources doivent être démarrés avant tous les conteneurs qui y sont liés. Il devient de plus en plus difficile de gérer les liens de conteneurs à mesure que le nombre de conteneurs augmente.

Nous pouvons obtenir des résultats similaires en connectant les conteneurs au même réseau. Les conteneurs sur le même réseau peuvent communiquer entre eux tout en étant isolés des conteneurs sur d'autres réseaux. Par défaut, tous les conteneurs nouvellement créés sont connectés au réseau de pont par défaut de Docker. Par conséquent, il est préférable de créer un réseau défini par l'utilisateur pour avoir un contrôle spécifique sur les conteneurs qui peuvent communiquer. Ceci est particulièrement important dans les environnements de production.

Les conteneurs sur un réseau défini par l'utilisateur peuvent se référencer les uns les autres par nom de conteneur. Les conteneurs du réseau pont par défaut ne peuvent se référencer que par adresse IP. Les conteneurs peuvent être connectés et déconnectés des réseaux définis par l'utilisateur pendant l'exécution. Pour se déconnecter du pont par défaut, le conteneur doit être arrêté et créé avec différentes options de réseau. Les conteneurs liés de cette manière ne partagent pas de variables d'environnement, mais vous pouvez y parvenir en utilisant des volumes ou Docker compose (dont je parlerai dans un prochain article).

  • Créez deux réseaux définis par l'utilisateur avec des sous-réseaux définis.
    • création du réseau docker –sous-réseau 192.168.100.0/24 mynet1
    • création du réseau docker –subnet 192.168.200.0/24 mynet2
  • Vérifier que les réseaux sont créés
  • Créez deux conteneurs attachés à mynet1
    • docker create -it –network mynet1 –name link1 busybox /bin/sh
    • docker create -it –network mynet1 –name link2 busybox /bin/sh
  • Créer un conteneur attaché à mynet2
    • docker create -it –network mynet2 –name link3 busybox /bin/sh
  • Démarrer les trois conteneurs
    • docker démarrer lien1 lien2 lien3
  • Inspecter les détails du réseau pour mynet1
    • le réseau docker inspecte mynet1
      • Notez que les sections Conteneurs répertorient link1 et link2
  • Inspecter les détails du réseau pour mynet2
    • le réseau docker inspecte mynet2
      • Remarquez que la section Conteneurs répertorie le lien3
  • Attacher un terminal au lien 1
  • Ping les conteneurs
    • ping lien1
      • Nous obtenons les résultats du ping du conteneur lui-même
    • ping link2
      • Nous obtenons des résultats de ping d'un conteneur sur le même réseau
    • lien ping3
      • Nous n'obtenons pas de résultats d'un conteneur sur un autre réseau
  • Connectez le conteneur link3 au réseau mynet1
    • Docker network connect mynet1 link3
  • Inspecter les détails du réseau pour mynet1
    • le réseau docker inspecte mynet1
      • Remarquez que la section Conteneurs inclut désormais link3 ainsi que link1 et link2
  • Afficher les métadonnées du conteneur pour link3
    • docker inspecte le lien3
      • Remarquez que la section Réseaux répertorie mynet1 et mynet2
  • Ping les conteneurs
    • ping lien3
      • Nous pouvons maintenant obtenir les résultats de link3 car il est sur le même réseau que link1
  • Déconnecter le conteneur link3 de mynet1
    • déconnexion du réseau docker mynet1 link3
  • Inspecter les détails du réseau pour mynet1
    • le réseau docker inspecte mynet1
      • Remarquez que la section Conteneurs ne répertorie plus le lien3
  • Afficher les métadonnées du conteneur pour link3
    • docker inspecte le lien3
      • Remarquez que la section Réseaux ne répertorie plus mynet1
  • Ping les conteneurs
    • ping lien3
      • Nous n'obtenons pas de résultats de link3 car il n'est plus sur le même réseau que link1
  • Arrêter les conteneurs
    • docker stop link1 link2 link3
  • Retirer les conteneurs
    • docker rm lien1 lien2 lien3
  • Supprimer les réseaux
    • docker network rm mynet1 mynet2

L'utilisation des fonctionnalités de mise en réseau de Docker nous offre plus de flexibilité, de sécurité et d'isolation de nos conteneurs.




Source link