Verständnis von Docker Compose Netzwerk und IP-Adressierung
Docker Compose ist ein leistungsstarkes Werkzeug zur Definition und Ausführung von Multi-Container-Anwendungen. Bei der Arbeit mit Docker Compose ist das Verständnis der Netzwerk- und IP-Adressierungsmechanismen entscheidend, um sicherzustellen, dass Ihre Anwendungen korrekt kommunizieren.
Docker Compose Netzwerküberblick
Docker Compose erstellt ein Standardnetzwerk für Ihre Anwendung, das es Containern ermöglicht, über Dienstnamen miteinander zu kommunizieren. Dieses Standardnetzwerk ist ein Bridge-Netzwerk, was bedeutet, dass Container über die ihnen zugewiesenen IP-Adressen aufeinander zugreifen können.
graph LR
subgraph Docker Compose Netzwerk
container1[Container 1] -- Kommunikation über IP --> container2[Container 2]
container2 -- Kommunikation über IP --> container3[Container 3]
end
IP-Adresszuweisung in Docker Compose
Standardmäßig weist Docker Compose Containern IP-Adressen aus einem vordefinierten Subnetz zu. Das verwendete Subnetz hängt vom Docker Netzwerk-Treiber und der Konfiguration Ihrer Docker-Umgebung ab.
Für das Standard-Bridge-Netzwerk weist Docker Compose typischerweise IP-Adressen aus dem Subnetz 172.16.0.0/16
zu. Sie können die den Containern zugewiesenen IP-Adressen mit dem Befehl docker network inspect
anzeigen.
$ 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": {}
}
]
Im obigen Beispiel erhalten die Container container1
und container2
die IP-Adressen 172.16.0.2/16
bzw. 172.16.0.3/16
innerhalb des Subnetzes 172.16.0.0/16
.
Das Verständnis der Docker Compose Netzwerk- und IP-Adressierungsmechanismen ist entscheidend für die Fehlersuche bei netzwerkbezogenen Problemen und die Anpassung der Netzwerkkonfiguration Ihrer Anwendung.