Skip to main content

Labo 8 - Le réseau, partie 2

Il existe 5 types de drivers réseaux que nous pouvons utiliser lors de la création d'un conteneur en ajoutant cet argument

--network <type>
Driver 1 : none

Absence totale de réseau au conteneur

sudo docker run -ti --rm --network none bash

image-1605530172447.png

Même en spécifiant un port avec -p il n'y aura pas de communication réseau

Driver 2 : bridge

Iil est le pilote par défaut. Il peut être utilisé pour faire communiquer plusieurs conteneurs entre eux quand c'est spécifié

Nous avons des adresses ip et nous voyons que les conteneurs se voient

image-1605530674999.png

Les deux conteneurs peuvent également communiquer avec le réseau de l'hôte qui a par défaut l'adresse ip 172.17.0.1

image-1605530791449.png

Maintenant chaque conteneur créé pourra communiquer avec un autre grâce au bridge par défaut.
Il est cependant possible d'isoler les réseaux des conteneurs en créant un clone du bridge

sudo docker network create --driver=bidge mon_bridge

Puis un

sudo docker network ls

image-1605531194118.png

Voyons comment créer des conteneurs sur ce nouveau bridge

sudo docker run -ti --rm --network=mon_bridge --name=srv1 bash

Puis

ifconfig

Et pour le deuxième conteneur

sudo docker run -ti --rm --network=mon_bridge --name=srv2 bash

Puis

ifconfig

image-1605531621956.png

Le DNS interne géré par Docker ne s'applique uniquement qu'aux réseaux bridges clonés

image-1605531787033.png

Maintenant si les conteneurs sont rattachés au bridge par défaut, il est possible de les rattacher dynamiquement à un bridge cloné

sudo docker network connect=mon_bridge srv1

et

sudo docker network connect=mon_bridge srv2

Pour supprimer un bridge cloné, il suffit de faire

sudo docker network rm mon_bridge

image-1605532605274.png

Cette opération ne peut se faire si nous n'avons plus aucun conteneur attaché à ce réseau

Driver 3 : host

Il permet à un conteneur de partager la même pile réseau que celle de l'hôte

Par exemple avec nginx nous avions spécifié un port particulier mais si nous faisons simplement

sudo docker run --rm --network=host nginx

On a bien accès au serveur nginx via un navigateur web
L'accès au network host est assez peu courant

Driver 4 : overlay

Il permet de connecter entre eux qui tournent sous des hôtes différents

Driver 5 : Macvlan

Il permet d'attribuer une adresse MAC à l'interface réseau virtuelle de chaque conteneur