Domine redes Docker: Crie, isole e controle containers

DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. permite compartimentar e gerenciar a comunicação entre containers de maneira simplificada, graças às diferentes opções de redes disponíveis. Neste tutorial, exploraremos como criar redesConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. personalizadas para controlar e isolar o tráfego entre containers de acordo com as necessidades de cada aplicação. Ao final, você será capaz de configurar a própria rede DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos., conectando diversos containers e entendendo como cada parte se relaciona.

Por que criar redes personalizadas?🔗

Por padrão, o DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. cria uma rede do tipo bridgeIsolamento de rede: bridge, host e overlay networksIsolamento de rede: bridge, host e overlay networksExplore os diferentes drivers de rede do Docker: bridge, host e overlay, e saiba como conseguir isolamento, escalabilidade e segurança para containers. chamada bridgeIsolamento de rede: bridge, host e overlay networksIsolamento de rede: bridge, host e overlay networksExplore os diferentes drivers de rede do Docker: bridge, host e overlay, e saiba como conseguir isolamento, escalabilidade e segurança para containers. (geralmente associada ao driver bridgeIsolamento de rede: bridge, host e overlay networksIsolamento de rede: bridge, host e overlay networksExplore os diferentes drivers de rede do Docker: bridge, host e overlay, e saiba como conseguir isolamento, escalabilidade e segurança para containers.) para que todos os containers possam se comunicar entre si. Entretanto, há casos em que precisamos de:

Criar redes personalizadas oferece essa flexibilidade, permitindo gerenciar melhor o fluxo de dados entre serviçosConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. em contêineres.

Drivers de rede e suas opções🔗

DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. disponibiliza vários drivers de rede. Cada driver tem características específicas, mas o mais comum para redes personalizadas em um único host é o driver bridgeIsolamento de rede: bridge, host e overlay networksIsolamento de rede: bridge, host e overlay networksExplore os diferentes drivers de rede do Docker: bridge, host e overlay, e saiba como conseguir isolamento, escalabilidade e segurança para containers.. Assim, cada container recebe um IP dentro da faixa definida e se comunica sem interferir em outras redesConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras.. Há ainda drivers como host, overlayIsolamento de rede: bridge, host e overlay networksIsolamento de rede: bridge, host e overlay networksExplore os diferentes drivers de rede do Docker: bridge, host e overlay, e saiba como conseguir isolamento, escalabilidade e segurança para containers. ou macvlanIntegração de containers com redes externasIntegração de containers com redes externasDescubra estratégias seguras para integrar containers Docker com redes externas, mapeando portas e configurando Macvlan e NAT para conexões eficientes., mas focaremos aqui na criação de uma redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. personalizada com bridgeIsolamento de rede: bridge, host e overlay networksIsolamento de rede: bridge, host e overlay networksExplore os diferentes drivers de rede do Docker: bridge, host e overlay, e saiba como conseguir isolamento, escalabilidade e segurança para containers..

Criando uma rede personalizada🔗

A criação de uma rede personalizada em DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. segue uma estrutura de comando bastante simples. A forma mais básica de criação de rede é:

docker network create \
  --driver bridge \
  minha_rede_personalizada

Nesse exemplo:

Após esse comando, sua redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. está pronta para ser usada e pode ser listada com:

docker network ls

Você verá algo parecido com:

NETWORK IDNAMEDRIVERSCOPE
127ab3...bridgebridgelocal
3b09d7...hosthostlocal
c2a1c8...nonenulllocal
56b3af...minha_rede_personalizadabridgelocal

Exemplo prático: conectando containers🔗

Vamos criar dois containers para demonstrar a comunicação dentro da redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. recém-criada.

1. Criar a redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. (caso ainda não tenha criado):

docker network create --driver bridge minha_rede_personalizada

2. Subir o primeiro container em modo detached, especificando a redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras.:

docker run -d \
  --name container_app1 \
  --network minha_rede_personalizada \
  nginx:alpine

3. Subir o segundo container:

docker run -d \
  --name container_app2 \
  --network minha_rede_personalizada \
  alpine sleep 3600

4. Testar a comunicação entre os containers:

  • Podemos acessar o shell do container_app2 para testar a conectividade com o container_app1 (onde o Nginx está rodando):
docker exec -it container_app2 sh
# Testando se obtém resposta do Nginx
wget -qO- http://container_app1
  • Se tudo estiver correto, você deverá ver algo como o HTML padrão do Nginx.

Personalizando faixa de IP de uma rede🔗

Em alguns ambientes, é necessário definir uma faixa de IP específica para evitar conflitos. Para isso, use as flags --subnet e --gateway. Por exemplo:

docker network create \
  --driver bridge \
  --subnet 192.168.100.0/24 \
  --gateway 192.168.100.1 \
  rede_customizada_subnet

Dessa forma, todos os containers conectados a essa redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. receberão IPs da faixa 192.168.100.0/24, e o gateway da redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. será 192.168.100.1.

Inspecionando sua rede🔗

Para verificar os detalhes da redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras., incluindo containers conectados e configuração IP, você pode usar:

docker network inspect minha_rede_personalizada

O resultado será um objeto JSON com várias informações, como o subnet, o gateway, as configurações de driver e os containers que estão ativos na redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras..

Conclusão e melhores práticas🔗

Criar e gerenciar redes personalizadas em DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. é essencial para organizar a comunicação entre containers de forma mais segura e controlada. Ao definir redesConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. próprias, você ganha:

Como boas práticas:

Com esse conhecimento, você está pronto para personalizar, isolar e controlar suas aplicações em contêineres DockerCriando e gerenciando containers Docker: guia básicoCriando e gerenciando containers Docker: guia básicoAprenda a criar e gerenciar contêineres Docker com comandos essenciais, boas práticas e dicas de segurança, garantindo aplicações isoladas e escaláveis. de forma mais robusta.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

  • Documentação do Docker Engine, que detalha a configuração e as opções de rede disponíveis no Docker: docs.docker.com/engine/
  • Documentação oficial do Docker, ideal para obter uma visão geral e aprofundada sobre a tecnologia, inclusive sobre redes: docs.docker.com/
  • Referência de linha de comando Docker CLI, útil para entender os comandos utilizados na criação e gerenciamento de redes personalizadas: docs.docker.com/engine/reference/commandline/docker/
  • Repositório de imagens oficiais no Docker Hub, relevante para quem deseja buscar as imagens utilizadas nos exemplos do tutorial: hub.docker.com/

Compartilhar artigo

Artigos Relacionados