Le réseau
Le réseau avec docker network
Docker permet une gestion avancée du réseau, entre un conteneur et la machine hôte, mais aussi entre les conteneurs.
Les réseaux docker peuvent être gérés avec la commande docker network.
docker network ls # lister les réseaux
docker network create mon_reseau # créer un réseau
docker network rm mon_reseau # supprimer un réseau
Il existe plusieurs types de réseaux docker, identifiés avec l'argument --driver.
- Bridge (pont)
Utilisé par défaut, c'est un réseau interne à docker.
Les conteneurs peuvent communiquer entre eux sur ce réseau. - Host
Le conteneur partage directement le réseau de l'hôte. Il n'est pas isolé et utilise l'adresse IP de l'hôte. Dans ce cas, la redirection de port n'est pas nécessaire. - None
Aucun réseau, isolation totale.
Docker propose par défaut un réseau pour chacun de ses 3 types.
Le réseau par défaut est bridge.
Driver Bridge
Ci-dessous un exemple avec l'image busybox qui embarque quelques utilitaires réseau, dont la commande ping.
- Un réseau
testnetworkest créé avec le driverbridge. - Un conteneur
c1est lancé en arrière-plan, il est attaché au réseautestnetworkavec--network=testnetwork. - Un deuxième conteneur
c2est lancé. Les deux conteneurs peuvent se pinguer.
Chaque conteneur est visible dans le réseau à partir de son nom défini avec --name.
Le réseau bridge par défaut de Docker isole les conteneurs entre-eux. Il est nécessaire de créer un autre réseau avec le driver bridge pour répéter l'expérience ci-dessus.
Un conteneur situé en dehors du réseau testnetwork ne peut pas pinguer c1 et c2 :

Driver Host
Un conteneur lancé avec le driver host n'est pas isolé du réseau de l'hôte. Les ports ouverts sur le conteneur sont ouverts sur l'hôte.
Par exemple, un conteneur lancé à partir de l'image 🔗 strm/helloworld-http écoutera à partir du port 80 de l'hôte, même sans redirection avec --port.
Le nom d'hôte du conteneur est affiché. Il est hérité depuis la machine hôte.
Gestion des réseaux
Il est possible de connecter un conteneur à un réseau existant avec docker network connect.
Le détail d'un réseau peut être affiché avec la commande docker network inspect.
Un réseau bridge embarque une configuration IP, de la même manière qu'un réseau local.
Le réseau est défini par un subnet et il possède une IP gateway attribuée à la machine hôte.
Dans l'exemple ci-dessus, le réseau reseau2 possède le subnet 172.19.0.0 avec un masque de sous-réseau 255.255.0.0 (ou /16).
L'adresse IP de la machine hôte est 172.19.0.1 et celle du conteneur c5 est 172.19.0.2.






