CodeGym /Cursos /Docker SELF /Usando redes personalizadas

Usando redes personalizadas

Docker SELF
Nível 17 , Lição 4
Disponível

5.1 Tipos principais de redes personalizadas

Redes personalizadas no Docker oferecem opções flexíveis para configurar e gerenciar a comunicação de rede entre containers. Elas permitem isolar containers, organizar a interação entre eles e criar topologias de rede complexas. Nesta aula, vamos ver como criar e configurar redes personalizadas no Docker, assim como exemplos de uso.

Tipos principais de redes personalizadas

O Docker suporta vários tipos de redes personalizadas, cada uma com suas características e destinada a diferentes cenários de uso:

  1. Bridge (redes bridge): oferecem isolamento e conexão entre containers em um único host. Este tipo de rede é usado por padrão para aplicações locais que não precisam interagir além do host.
  2. Overlay (redes overlay): projetadas para conectar containers em hosts diferentes dentro de um cluster Docker Swarm ou Kubernetes. Elas fornecem alta escalabilidade e segurança para aplicações distribuídas.
  3. Macvlan: permitem que containers usem diretamente a interface de rede física do host. Isso é útil para aplicações de rede com alto requisito de desempenho, assim como para casos em que é necessário associar a endereços MAC específicos. Containers em redes Macvlan podem interagir com outros dispositivos da rede física como se fossem nós separados.
  4. Host (redes do host): os containers utilizam a pilha de rede do host, eliminando a sobrecarga da virtualização de rede, mas reduzindo o isolamento. Este tipo de rede é adequado para aplicações que necessitam de desempenho máximo de rede.

5.2 Criando e usando redes bridge

Redes bridge são o tipo mais comum de redes personalizadas e são usadas para isolar containers em um único host. Containers conectados à mesma rede bridge podem interagir entre si por meio de endereços IP e nomes de hosts.

Criando uma rede bridge personalizada

Para criar uma rede bridge personalizada, use o comando docker network create:

Terminal

docker network create --driver bridge my_bridge_network

Executando containers em uma rede personalizada

Inicie os containers conectando-os à rede criada:

Terminal

docker run -d --name container1 --network my_bridge_network nginx

docker run -d --name container2 --network my_bridge_network busybox sleep 1000

Verificando a conectividade entre containers

Você pode usar o comando ping para verificar a conectividade entre os containers:

Terminal

docker exec container2 ping -c 4 container1

Se os containers estiverem corretamente conectados à rede my_bridge_network, o comando ping será bem-sucedido.

5.3 Redes personalizadas no Docker Compose

Exemplos de uso de redes personalizadas no Docker Compose

O Docker Compose facilita a criação e gerenciamento de redes para aplicações com múltiplos containers. Você pode definir redes personalizadas no arquivo docker-compose.yml.

Exemplo de arquivo docker-compose.yml:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_bridge_network

  app:
    image: myapp:latest
    networks:
      - my_bridge_network

networks:
  my_bridge_network:
    driver: bridge

Execute o Docker Compose:

Terminal

docker compose up -d

Neste exemplo, ambos os serviços (web e app) estão conectados à rede personalizada my_bridge_network.

5.4 Configurando e usando redes macvlan

As redes macvlan permitem que os containers usem diretamente a interface de rede física do host, o que pode ser útil para aplicações que exigem alta performance de rede. Os containers em uma rede dessas recebem seus próprios endereços IP dentro da sub-rede especificada, tornando-os visíveis na mesma rede que o host.

Criando uma rede macvlan

Terminal

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

Neste comando:

  • --subnet: define a sub-rede onde os containers estarão localizados.
  • --gateway: especifica o gateway para os containers.
  • -o parent: indica a interface de rede do host à qual a rede será vinculada.

Rodando containers na rede macvlan

Terminal

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

docker run -d --name container2 --network my_macvlan_network busybox sleep 1000

Neste exemplo, ambos os containers estão conectados à rede my_macvlan_network e têm acesso à rede externa através da interface física eth0.

5.5 Exemplos de uso no Docker Compose

Você também pode usar redes macvlan no Docker Compose. Por exemplo:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_macvlan_network
        
networks:
  my_macvlan_network:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1

Execute o Docker Compose:

Terminal

docker compose up -d

Neste exemplo, a rede my_macvlan_network permite que o serviço web interaja com dispositivos na sub-rede 192.168.1.0/24, incluindo o host.

Dicas práticas:

  • Configuração de acesso: Certifique-se de que seu roteador ou administrador de rede permita o uso da sub-rede especificada nas configurações de macvlan.
  • Isolamento: Se a segurança for importante, use VLAN para segmentar a rede, garantindo que os containers tenham acesso apenas aos recursos necessários.
  • Teste: Após a configuração, verifique a conectividade entre os containers e a rede externa usando comandos como ping ou curl.

5.6 Exemplo de uso de redes para microservices

Vamos dar uma olhada em um exemplo onde temos frontend, backend e banco de dados isolados em diferentes redes, mas que ainda conseguem interagir através da interseção de redes.

Arquivo docker-compose.yml

Yaml

version: '3.8'

services:
  frontend:
    image: myfrontend:latest
    networks:
      - front-tier
      - back-tier
        
  backend:
    image: mybackend:latest
    networks:
      - back-tier
      - db-tier
        
  database:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    networks:
      - db-tier
        
networks:
  front-tier:
    driver: bridge
  back-tier:
    driver: bridge
  db-tier:
    driver: bridge

Inicie o Docker Compose:

Terminal

docker compose up -d 

Nesse exemplo:

  • O serviço frontend está conectado às redes front-tier e back-tier, permitindo que ele interaja tanto com os clientes externos quanto com o backend.
  • O serviço backend está conectado às redes back-tier e db-tier, permitindo que ele interaja tanto com o frontend quanto com o banco de dados.
  • O serviço database está conectado apenas à rede db-tier, o que garante o isolamento do banco de dados de acessos externos.

Dicas práticas:

  • Use isolamento: Separar redes ajuda a limitar o acesso dos serviços aos bancos de dados ou outros recursos críticos.
  • Teste a conexão: Certifique-se de que os serviços conseguem interagir uns com os outros através de redes comuns, usando comandos como ping ou curl.
  • Otimize: Use a rede overlay, se o seu projeto for executado em um cluster ou em múltiplos hosts.

Este exemplo mostra como criar isolamento de rede e, ao mesmo tempo, habilitar a interação entre diferentes camadas de um aplicativo.

1
Опрос
Configurações de Rede do Docker,  17 уровень,  4 лекция
недоступен
Configurações de Rede do Docker
Configurações de Rede do Docker
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION