3.1 Básico de bridge network
A rede bridge
é o driver de rede padrão no Docker e é usada para criar uma rede isolada onde os containers podem interagir entre si. Essa rede permite que os containers se comuniquem por endereços IP e nomes de host, oferecendo uma forma prática de organizar a interação entre diferentes componentes de aplicações multicontainer.
A rede bridge
cria uma rede interna privada no nível do host, que é isolada da rede externa do host. Containers conectados a essa rede podem interagir uns com os outros, mas não podem ser acessados diretamente de fora sem configuração de redirecionamento de portas.
Criação automática da bridge network
Por padrão, o Docker cria a rede bridge
durante a instalação, e os containers que são iniciados sem a especificação de uma rede específica são automaticamente conectados a essa rede.
Exemplo de criação e uso de containers em uma bridge network
1. Executando containers na rede bridge
:
Neste exemplo, executamos dois containers: container1 com Nginx e container2 com Busybox. Ambos os containers estão conectados à rede bridge padrão.
docker run -d --name container1 nginx
docker run -d --name container2 busybox sleep 1000
2. Verificando os endereços IP dos containers:
Para verificar os endereços IP dos containers, use o comando docker inspect.
Esses comandos exibirão os endereços IP dos containers, que podem ser usados para estabelecer comunicação entre eles.
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container2
3. Comunicação entre containers por endereço IP:
Para testar a comunicação entre containers, use o comando ping
do container container2
para pingar o container1
.
Se os containers estiverem devidamente conectados à rede bridge
, o comando ping
será bem-sucedido.
docker exec container2 ping -c 4 <IP_ADDRESS_OF_CONTAINER1>
Explicação: A rede bridge
oferece uma solução simples para aplicações locais em que os containers precisam interagir entre si, permanecendo isolados da rede externa. O ping por endereço IP é uma forma básica de verificar a conexão de rede, mas para aplicações mais complexas pode ser necessário configurar DNS ou drivers de rede adicionais.
3.2 Uso de nomes de host
Usando nomes de host para conexão entre containers
Além de usar endereços IP, o Docker também permite usar nomes de containers para conectá-los. Isso facilita a configuração, pois os nomes dos containers permanecem constantes, ao contrário dos endereços IP, que podem mudar ao reiniciar os containers.
Exemplo de conexão usando nome de host
1. Rodando containers especificando a rede bridge
:
docker run -d --name webserver --network bridge nginx
docker run -d --name appserver --network bridge busybox sleep 1000
2. Testando a conexão pelo nome de host:
Use o comando ping
do container appserver
para "pingar" o webserver
:
docker exec appserver ping -c 4 webserver
Criando uma bridge network
personalizada
Em vez de usar a rede bridge
padrão, você pode criar uma rede bridge
personalizada para ter mais controle sobre a interação entre containers.
Exemplo de criação de rede personalizada
1. Criando uma rede personalizada:
docker network create --driver bridge my_bridge_network
2. Rodando containers na rede personalizada:
docker run -d --name webserver --network my_bridge_network nginx
docker run -d --name appserver --network my_bridge_network busybox sleep 1000
3. Testando a conexão pelo nome de host:
docker exec appserver ping -c 4 webserver
3.3 Exemplos com múltiplos hosts
Exemplos práticos de uso
Exemplo 1: Servidor web e banco de dados
Crie um arquivo docker-compose.yml
para o servidor web e o banco de dados:
version: '3.8'
services:
web:
image: nginx:latest
networks:
- my_bridge_network
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
networks:
- my_bridge_network
networks:
my_bridge_network:
driver: bridge
Inicie o Docker Compose:
docker compose up -d
Teste a conexão entre os containers:
docker compose exec web ping -c 4 db
Exemplo 2: Arquitetura de microsserviços
Crie um arquivo docker-compose.yml
para a aplicação de microsserviços:
version: '3.8'
services:
frontend:
image: nginx:latest
networks:
- my_bridge_network
backend:
image: mybackend:latest
networks:
- my_bridge_network
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
networks:
- my_bridge_network
networks:
my_bridge_network:
driver: bridge
Inicie o Docker Compose
:
docker compose up -d
Teste a conexão entre os containers:
docker compose exec backend ping -c 4 db
docker compose exec frontend ping -c 4 backend
GO TO FULL VERSION