GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Expliquer les concepts de mise en réseau Docker

Mise en réseau Docker est essentiellement utilisé pour établir la communication entre les conteneurs Docker et le monde extérieur via la machine hôte ou vous pouvez dire qu'il s'agit d'un passage de communication à travers lequel tous les conteneurs isolés communiquent entre eux dans diverses situations pour effectuer les actions requises. Dans ce guide, nous expliquerons les concepts de base du réseau Docker avec des exemples pratiques sur Ubuntu.

Si vous n'avez pas encore installé Docker, consultez le guide suivant.

  • Comment installer Docker sur le serveur Ubuntu 18.04 LTS

Principes de base de l'utilisation de Docker :

  • Premiers pas avec Docker

Expliquer les concepts de mise en réseau Docker

Toutes les commandes listées ci-dessous sont testées avec root privilèges sur Ubuntu .

Pour gérer les opérations de réseau, comme la création d'un nouveau réseau, la connexion d'un conteneur à un réseau, la déconnexion d'un conteneur du réseau, la liste des réseaux disponibles et la suppression de réseaux, etc., nous utilisons la commande suivante :

# docker network

Types de pilotes réseau Docker

Pour répertorier tous vos réseaux, exécutez :

# docker network ls

Faisons une brève introduction sur chacun d'eux.

  1. Réseau de pont : Lorsque vous démarrez Docker, un réseau de pont par défaut est créé automatiquement. Un conteneur nouvellement démarré s'y connectera automatiquement. Vous pouvez également créer des réseaux de pont personnalisés définis par l'utilisateur. Les réseaux de pont définis par l'utilisateur sont supérieurs au réseau de pont par défaut.
  2. Réseau hôte : Il supprime l'isolation du réseau entre le conteneur et l'hôte Docker et utilise directement le réseau de l'hôte. Si vous exécutez un conteneur qui se lie au port 80 et que vous utilisez un réseau hôte, l'application du conteneur est disponible sur le port 80 sur l'adresse IP de l'hôte. Cela signifie que vous ne pourrez pas exécuter plusieurs conteneurs Web sur le même hôte, sur le même port, car le port est désormais commun à tous les conteneurs du réseau hôte.
  3. Aucun réseau : Dans ce type de réseau, les conteneurs ne sont rattachés à aucun réseau et n'ont aucun accès au réseau externe ou à d'autres conteneurs. Ainsi, ce réseau est utilisé lorsque vous souhaitez désactiver complètement la pile réseau sur un conteneur.
  4. Réseau superposé : Crée un réseau privé interne qui s'étend sur tous les nœuds participant au cluster Swarm. Ainsi, les réseaux Overlay facilitent la communication entre un service docker swarm et un conteneur autonome, ou entre deux conteneurs autonomes sur différents démons Docker.
  5. Réseau Macvlan : Certaines applications, en particulier les applications héritées ou les applications qui surveillent le trafic réseau, s'attendent à être directement connectées au réseau physique. Dans ce type de situation, vous pouvez utiliser le pilote réseau Macvlan pour attribuer une adresse MAC à l'interface réseau virtuelle de chaque conteneur, la faisant apparaître comme une interface réseau physique directement connectée au réseau physique.

Permettez-moi de vous montrer des exercices pratiques sur les réseaux Bridge et Host.

1. Réseau de pont

J'utiliserai deux conteneurs Alpine pour expliquer ce type de réseau.

Maintenant, je vais faire fonctionner deux conteneurs Alpine à savoir C1 et C2 en utilisant les commandes :

# docker run -it -d --name c1 alpine ash
# docker run -it -d --name c2 alpine ash

Ensuite, découvrons l'adresse IP de ces conteneurs en cours d'exécution. Pour ce faire, exécutez :

# docker exec -it c1 sh –c “ip a”
# docker exec -it c2 sh –c “ip a”

Comme vous pouvez le voir, l'adresse IP du conteneur C1 est 172.17.0.2 et l'adresse IP de C2 est 172.17.0.3 .

Maintenant, essayons de nous pinger pour nous assurer qu'ils peuvent communiquer.

Tout d'abord, attachez-vous au conteneur C1 en cours d'exécution et essayez d'envoyer un ping au conteneur C2 :

# docker attach c1
# Ping –c 2 172.17.0.3

De même, attachez-vous au conteneur C2 et essayez d'envoyer un ping au conteneur C1.

# docker attach c2
# Ping –c 2 172.17.0.2

Comme vous le voyez dans les captures d'écran ci-dessus, la communication se produit entre les conteneurs du même réseau.

Nous pouvons également le vérifier en inspectant le réseau du pont à l'aide de la commande :

# docker network inspect bridge

La commande ci-dessus affichera toutes les informations sur le réseau, telles que le type de réseau, le sous-réseau, la passerelle, le nom des conteneurs et les adresses iip, etc.

1.1 Création d'un réseau de pont défini par l'utilisateur

Comme je l'ai déjà dit, lorsque vous démarrez Docker, un réseau de pont par défaut est créé automatiquement . Tous les conteneurs nouvellement démarrés s'y connecteront automatiquement. Cependant, vous pouvez également créer des réseaux de ponts personnalisés définis par l'utilisateur.

Pour créer un nouveau pilote réseau, exécutez simplement :

# docker network create my_net

Ou,

# docker network create --driver bridge dhruv_net

Les deux commandes feront le même travail. Si vous ne spécifiez pas le nom du pilote, il sera créé dans le pilote réseau par défaut, c'est-à-dire pont .

Sur les réseaux définis par l'utilisateur comme dhruv_net, les conteneurs peuvent non seulement communiquer par adresse IP, mais peuvent également résoudre un nom de conteneur en une adresse IP. Cette fonctionnalité est appelée découverte automatique des services .

Pour nous assurer que les conteneurs peuvent communiquer entre eux, exécutons trois conteneurs alpins, à savoir A1 , A2 et A3 sur dhruv_net réseau que nous avons créé précédemment.

# docker run -it -d --name A1 --network dhruv_net alpine ash
# docker run -it -d --name A2 --network dhruv_net alpine ash
# docker run -it -d --name A3 --network dhruv_net alpine ash

Essayez maintenant de vous attacher à l'un des conteneurs et d'envoyer un ping aux deux autres en utilisant le nom du conteneur.

D'après les captures d'écran ci-dessus, il est prouvé que les conteneurs peuvent communiquer entre eux.

2. Réseau hôte

Nous exécutons un conteneur qui se lie au port 80 en utilisant le réseau hôte, l'application du conteneur est disponible sur le port 80 sur l'adresse IP de l'hôte.

Le réseau hôte n'est nécessaire que lorsque vous exécutez des programmes avec un réseau très spécifique. L'application s'exécutant à l'intérieur du conteneur Docker semble s'exécuter sur l'hôte lui-même, du point de vue du réseau. Il permet au conteneur un accès réseau supérieur à ce qu'il peut normalement obtenir.

Ici, nous avons utilisé netstat -ntlp commande pour afficher le port d'écoute sur le serveur. Pour trouver quel service écoute sur un port particulier, ce guide .

Nous n'avons couvert que les bases des concepts de mise en réseau Docker. Pour plus de détails, je vous suggère de consulter le guide de mise en réseau Docker ci-dessous.

  • Mise en réseau de conteneurs Docker

Suggestion de lecture :

  • Expliquer les volumes Docker
  • Comment mettre à jour automatiquement les conteneurs Docker en cours d'exécution
  • ctop – Un outil de surveillance en ligne de commande pour les conteneurs Linux
  • Portainer – Le moyen le plus simple de gérer Docker
  • PiCluster :une application Web simple de gestion Docker
  • Dockly – Gérer les conteneurs Docker depuis le terminal

À propos de l'auteur :

Dhruv Tiwari est un ingénieur DevOps qui aime automatiser les choses, travailler avec Linux à grande échelle et rêver du jour où les systèmes seront suffisamment intelligents pour ne jamais avoir besoin de se connecter à une machine Linux. Journey Of CI/CD du code source au déploiement du code jusqu'à la production.


Docker
  1. Obtenez notre aide-mémoire sur les réseaux Linux

  2. Comment redémarrer le réseau sur Ubuntu

  3. Vous avez un vrai problème avec la mise en réseau de Systemctl ?

  4. Comment configurer proprement le Docker réseau dans Ubuntu Gnome 15.10 ?

  5. Comment accéder à l'espace de noms réseau du conteneur Docker à partir de l'hôte

Software Defined Networking (SDN) expliqué aux débutants

Expliquer les volumes Docker avec des exemples

Apprenez différentes options de mise en réseau dans VirtualBox

Mettre une loupe sur Docker avec Docker Inspect

Comment obtenir l'adresse IP du conteneur Docker

Comment configurer les espaces de noms réseau dans les conteneurs Docker