Comprendre le réseau et l'adressage IP de Docker Compose
Docker Compose est un outil puissant pour définir et exécuter des applications multi-conteneurs. Lorsqu'on travaille avec Docker Compose, il est crucial de comprendre les mécanismes de réseau et d'adressage IP pour garantir que vos applications communiquent correctement.
Vue d'ensemble du réseau Docker Compose
Docker Compose crée un réseau par défaut pour votre application, permettant aux conteneurs de communiquer entre eux en utilisant les noms de service. Ce réseau par défaut est un réseau pont, ce qui signifie que les conteneurs peuvent accéder les uns aux autres en utilisant les adresses IP qui leur sont attribuées.
graph LR
subgraph Réseau Docker Compose
container1[Conteneur 1] -- Communiquer via IP --> container2[Conteneur 2]
container2 -- Communiquer via IP --> container3[Conteneur 3]
end
Attribution d'adresses IP dans Docker Compose
Par défaut, Docker Compose attribue des adresses IP aux conteneurs à partir d'un sous-réseau prédéfini. Le sous-réseau spécifique utilisé dépend du pilote de réseau Docker et de la configuration de votre environnement Docker.
Pour le réseau pont par défaut, Docker Compose attribue généralement des adresses IP à partir du sous-réseau 172.16.0.0/16. Vous pouvez afficher les adresses IP attribuées à vos conteneurs à l'aide de la commande docker network inspect.
$ docker network inspect bridge
[
{
"Name": "bridge",
"Id": "...",
"Created": "...",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.16.0.0/16",
"Gateway": "172.16.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"...": {
"Name": "container1",
"EndpointID": "...",
"MacAddress": "...",
"IPv4Address": "172.16.0.2/16",
"IPv6Address": ""
},
"...": {
"Name": "container2",
"EndpointID": "...",
"MacAddress": "...",
"IPv4Address": "172.16.0.3/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
Dans l'exemple ci-dessus, les conteneurs container1 et container2 se voient attribuer les adresses IP 172.16.0.2/16 et 172.16.0.3/16 respectivement, dans le sous-réseau 172.16.0.0/16.
La compréhension des mécanismes de réseau et d'adressage IP de Docker Compose est essentielle pour le dépannage des problèmes liés au réseau et pour la personnalisation de la configuration réseau de votre application.