Fundamentos da Rede Docker

Antes de mergulharmos nos tópicos mais complexos, é importante entender os conceitos fundamentais da rede no Docker.

  • Bridge Network

Uma bridge network é a rede padrão criada quando você instala o Docker. Ela permite que os contêineres se comuniquem uns com os outros na mesma rede usando nomes de host.

Vamos criar uma rede bridge chamada “my_network” para demonstrar como funciona:

docker network create my_network

Agora, vamos executar dois containers nessa rede:

docker run --name container1 --network my_network -d nginx
docker run --name container2 --network my_network -d nginx

Os containers container1 e container2 podem se comunicar usando os nomes de host container1 e container2.

  • Port Forwarding

O Docker permite que você encaminhe portas de contêineres para o host. Isso é útil quando você deseja acessar serviços dentro de um contêiner diretamente do seu sistema host.

Por exemplo, para encaminhar a porta 8080 do contêiner para a porta 80 do host:

docker run -d -p 8080:80 nginx

[!tip] Agora, você pode acessar o conteúdo do contêiner Nginx em http://localhost:8080 no seu navegador.

  • Redes Personalizadas

As redes bridge são úteis, mas você também pode criar redes personalizadas para isolamento e maior controle. Por exemplo, você pode criar uma rede overlay para comunicação entre contêineres em diferentes hosts.

docker network create --driver overlay my_overlay_network

[!warning] You need the following ports open to traffic to and from each Docker host participating on an overlay network: TCP port 2377 for cluster management communications TCP and UDP port 7946 for communication among nodes UDP port 4789 for overlay network traffic

Article content

https://docs.docker.com/network/drivers/overlay/


Anexar e Desanexar Containers Link para o cabeçalho

Para adicionar contêineres a uma rede existente, use o comando docker network connect:

docker network connect my_network container3

Para remover um contêiner de uma rede, use o comando docker network disconnect:

docker network disconnect my_network container3

IPvlan, Macvlan e None Network Link para o cabeçalho

Além das redes bridge, overlay e personalizadas, o Docker oferece recursos avançados de rede que podem ser úteis em cenários mais complexos. Vamos explorar um pouco esses três recursos: IPvlan, Macvlan e None Network.

  • IPvlan Network

A rede IPvlan permite que você atribua endereços IP individuais a cada contêiner, tornando-os acessíveis diretamente na rede externa. Isso é especialmente útil quando você deseja evitar a camada de encapsulamento da rede Docker e assim obter um melhor desempenho.

Exemplo de Uso do IPvlan

Primeiro, crie uma rede IPvlan:

docker network create -d ipvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my_ipvlan_network

Agora, inicie um contêiner com um IP específico dentro dessa rede:

docker run --name container_ipvlan --network my_ipvlan_network --ip=192.168.1.2 -d nginx

O contêiner container_ipvlan agora tem um endereço IP válido na rede externa.

  • Macvlan Network

A rede Macvlan é semelhante à IPvlan, mas permite que cada contêiner tenha seu próprio endereço MAC. Isso é útil quando você precisa de isolamento de camada de link e um endereço MAC exclusivo para cada contêiner.

Exemplo de Uso do Macvlan

Crie uma rede Macvlan:

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my_macvlan_network

Inicie um contêiner na rede Macvlan:

docker run --name container_macvlan --network my_macvlan_network -d nginx

Agora, o contêiner container_macvlan tem seu próprio endereço MAC e IP na rede externa.

  • None Network

A rede None é uma rede que não fornece conectividade de rede externa para um contêiner somente a loopback é criada. Isso pode ser útil quando você deseja que um contêiner tenha sua rede desativada completamente, mas ainda esteja em execução.

Exemplo de Uso da None Network

Crie um contêiner com a rede None:

docker run --name container_none --network none -d nginx

O contêiner container_none não terá conectividade de rede externa, mas ainda pode ser usado para tarefas internas.


Network Scopes Link para o cabeçalho

Os contêineres têm diferentes níveis de isolamento de rede. Eles podem estar em um escopo de rede global ou local. A rede bridge é um exemplo de escopo local, onde os contêineres podem se comunicar apenas na mesma máquina. As redes overlay são globais e permitem a comunicação entre hosts.

Comunicação entre Hosts Link para o cabeçalho

Quando você tem contêineres em diferentes hosts, pode usar redes overlay para conectar os contêineres entre si. Para fazer isso, configure um serviço de descoberta de chave-valor como o Consul ou o etcd para que os contêineres possam se registrar e se descobrir em diferentes hosts.

Conclusão Link para o cabeçalho

A rede no Docker é uma parte fundamental da orquestração de contêineres e da criação de aplicativos distribuídos. Neste artigo, exploramos alguns conceitos, como redes personalizadas, brigde, overlay, ipvlan, macvlan, none, além de fornecer exemplos básicos para ilustrar esses conceitos. Certifique-se de explorar a documentação do Docker https://docs.docker.com/network/ e experimentar os conceitos discutidos neste artigo em seu próprio ambiente de desenvolvimento para obter uma compreensão completa desses tópicos.