Compreendendo a Rede e o Endereçamento IP do Docker Compose
Docker Compose é uma ferramenta poderosa para definir e executar aplicações multi-container. Ao trabalhar com Docker Compose, compreender os mecanismos de rede e endereçamento IP é crucial para garantir que suas aplicações se comuniquem corretamente.
Visão Geral da Rede Docker Compose
Docker Compose cria uma rede padrão para sua aplicação, permitindo que os containers se comuniquem entre si usando os nomes dos serviços. Esta rede padrão é uma rede de ponte, o que significa que os containers podem acessar uns aos outros usando os endereços IP atribuídos a eles.
graph LR
subgraph Rede Docker Compose
container1[Container 1] -- Comunicar via IP --> container2[Container 2]
container2 -- Comunicar via IP --> container3[Container 3]
end
Atribuição de Endereços IP no Docker Compose
Por padrão, o Docker Compose atribui endereços IP aos containers de uma sub-rede pré-definida. A sub-rede específica usada depende do driver de rede Docker e da configuração do seu ambiente Docker.
Para a rede de ponte padrão, o Docker Compose normalmente atribui endereços IP da sub-rede 172.16.0.0/16. Você pode visualizar os endereços IP atribuídos aos seus containers usando o 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": {}
}
]
No exemplo acima, os containers container1 e container2 recebem os endereços IP 172.16.0.2/16 e 172.16.0.3/16, respectivamente, dentro da sub-rede 172.16.0.0/16.
Compreender os mecanismos de rede e endereçamento IP do Docker Compose é crucial para solucionar problemas relacionados à rede e personalizar a configuração de rede da sua aplicação.