Skip to content

Réseaux

Docker dispose des 3 réseaux suivants :

  • bridge : réseau par défaut
  • host : pour les conteneurs qui ont besoin d'accéder directement à la pile réseau de la machine hôte
  • none : pour les conteneurs qui n'ont pas besoin d'accès réseau

Info

  • Il n'y a pas de résolution de noms sur le réseau bridge
  • Il n'est pas possible d'attribuer des IP fixes sur le réseau bridge et sur tout réseau dont on n'a pas défini le subnet (sous-réseau)

Lister les réseaux

bash
docker network ls

Créer un réseau

bash
docker network create newnet

# Affecter une IP statique
docker network create newnet --subnet 172.20.0.0/16

Conteneurs et réseaux

Lister les conteneurs dans un réseau :

bash
docker network inspect <network>

# Lister les IDs des conteneurs
docker network inspect bridge | jq '.[].Containers|keys'

Publier le port d'un conteneur sur le réseau, par exemple si on stocke un site internet dans un conteneur Nginx, afin de le rendre accessible depuis l'extérieur :

bash
docker run --publish <host_port>:<container_port> <image>

Supprimer des réseaux

bash
docker network rm <network>

# Supprime tous les réseaux non utilisés, c'est-à-dire sans conteneurs
docker network prune

Affecter un conteneur à un réseau

bash
# Affecter
docker network connect <network> <container>
# Détacher
docker network disconnect <network> <container>

Info

Docker n'offre aucun routage entre ses différents réseaux. Si deux conteneurs doivent communiquer l'un avec l'autre, plusieurs solutions :

  • connecter les deux conteneurs au même réseau
  • exposer les ports des conteneurs sur l'hôte
  • faire en sorte que les deux conteneurs partagent le même espace de nom réseau