Comprensión de la Red y la Dirección IP de Docker Compose
Docker Compose es una herramienta potente para definir y ejecutar aplicaciones multicontenedor. Al trabajar con Docker Compose, comprender los mecanismos de red y direccionamiento IP es crucial para asegurar que tus aplicaciones se comuniquen correctamente.
Descripción General de la Red de Docker Compose
Docker Compose crea una red predeterminada para tu aplicación, permitiendo que los contenedores se comuniquen entre sí utilizando los nombres de los servicios. Esta red predeterminada es una red de puente, lo que significa que los contenedores pueden acceder entre sí utilizando las direcciones IP que se les asignan.
graph LR
subgraph Red de Docker Compose
container1[Contenedor 1] -- Comunicarse a través de IP --> container2[Contenedor 2]
container2 -- Comunicarse a través de IP --> container3[Contenedor 3]
end
Asignación de Direcciones IP en Docker Compose
De forma predeterminada, Docker Compose asigna direcciones IP a los contenedores desde una subred predefinida. La subred específica utilizada depende del controlador de red de Docker y de la configuración de tu entorno Docker.
Para la red de puente predeterminada, Docker Compose generalmente asigna direcciones IP desde la subred 172.16.0.0/16. Puedes ver las direcciones IP asignadas a tus contenedores utilizando el comando 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": {}
}
]
En el ejemplo anterior, los contenedores container1 y container2 tienen asignadas las direcciones IP 172.16.0.2/16 y 172.16.0.3/16, respectivamente, dentro de la subred 172.16.0.0/16.
Comprender los mecanismos de red y direccionamiento IP de Docker Compose es crucial para solucionar problemas relacionados con la red y personalizar la configuración de red de tu aplicación.