Laboratório de Redes Docker

DockerBeginner
Pratique Agora

Introdução

A rede no Docker é um aspecto fundamental da orquestração de containers, permitindo que eles se comuniquem entre si e com redes externas. Este desafio guiará você pelos conceitos essenciais de redes Docker, desde a criação e gerenciamento de redes até a conexão e desconexão de containers.

Ao concluir este desafio, você ganhará experiência prática com comandos de rede do Docker e entenderá como configurar a comunicação entre containers. Essas habilidades são cruciais para desenvolver e implantar aplicações multi-container em ambientes Docker.

Vamos mergulhar no mundo das redes Docker!

Criar uma Rede

Nesta etapa, você criará sua primeira rede Docker. Esta é a base para conectar containers e permitir a comunicação entre eles.

Tarefas

  1. Crie uma nova rede do tipo bridge chamada my-network usando o comando docker network create.
  2. Verifique se a rede foi criada listando todas as redes Docker.

Requisitos

  • Realize todas as operações no diretório /home/labex/project.
  • Use o driver bridge padrão ao criar a rede.

Exemplo

Após concluir esta etapa, você deverá ver a my-network listada ao executar docker network ls:

NETWORK ID     NAME         DRIVER    SCOPE
abcdef123456   my-network   bridge    local
✨ Verificar Solução e Praticar

Iniciar Containers na Rede

Agora que temos uma rede, vamos iniciar alguns containers e conectá-los a ela. Esta etapa demonstrará como iniciar containers dentro de uma rede específica, um conceito-chave nas redes Docker.

Tarefas

  1. Inicie um container chamado container1 usando a imagem nginx e conecte-o à my-network.
  2. Inicie outro container chamado container2 usando a imagem httpd e conecte-o à my-network.
  3. Verifique se ambos os containers estão em execução e conectados à my-network.

Requisitos

  • Realize todas as operações no diretório /home/labex/project.
  • Use a flag --network ao iniciar os containers para conectá-los à my-network.
  • Execute ambos os containers em modo detached (segundo plano).

Exemplo

Após concluir esta etapa, você deverá ver ambos os containers em execução ao usar docker ps:

CONTAINER ID   IMAGE   COMMAND   CREATED         STATUS         PORTS     NAMES
abcdef123456   nginx   "..."     2 minutes ago   Up 2 minutes   80/tcp    container1
fedcba654321   httpd   "..."     2 minutes ago   Up 2 minutes   80/tcp    container2
✨ Verificar Solução e Praticar

Testar Conectividade

Nesta etapa, você verificará se os containers conseguem se comunicar entre si através da rede que você criou. Este é um teste crucial para garantir que sua configuração de rede está funcionando como esperado.

Tarefas

  1. Use o comando docker exec para abrir um shell no container1.
  2. De dentro do container1, use o comando curl para acessar o container2 pelo seu nome de container.

Requisitos

  • Realize todas as operações no diretório /home/labex/project.
  • Use container2 como o hostname no seu comando curl.
  • O comando curl deve acessar a porta HTTP padrão (80) no container2.

Exemplo

Após executar o comando curl a partir do container1, você deverá ver o conteúdo da página padrão do Servidor HTTP Apache:

<!DOCTYPE html>
<html><body><h1>It works!</h1></body></html>
✨ Verificar Solução e Praticar

Conectar um Container a Múltiplas Redes

Nesta etapa, você aprenderá como conectar um único container a múltiplas redes. Este é um conceito mais avançado, útil para criar topologias de rede complexas ou para migrar serviços gradualmente entre redes.

Tarefas

  1. Crie uma nova rede bridge chamada my-network2.
  2. Conecte o container2 à my-network2 mantendo sua conexão com a my-network.
  3. Verifique se o container2 está agora conectado a ambas as redes.

Requisitos

  • Realize todas as operações no diretório /home/labex/project.
  • Use o comando docker network connect para adicionar o container2 à my-network2.
  • Use o comando docker inspect para verificar as conexões de rede.

Exemplo

Após conectar o container2 à my-network2, você deverá ver ambas as redes listadas ao inspecionar o container:

"Networks": {
    "my-network": {
        ...
    },
    "my-network2": {
        ...
    }
}
✨ Verificar Solução e Praticar

Desconectar um Container de uma Rede

Nesta etapa, você aprenderá como remover um container de uma rede sem interromper sua execução. Isso é útil quando você precisa isolar um container ou quando está reorganizando sua arquitetura de rede.

Tarefas

  1. Desconecte o container2 da my-network usando o comando docker network disconnect.
  2. Verifique se o container2 não está mais conectado à my-network.

Requisitos

  • Realize todas as operações no diretório /home/labex/project.
  • Use o comando docker network disconnect para remover o container2 da my-network.
  • Use o comando docker network inspect para verificar a desconexão.

Exemplo

Após desconectar o container2 da my-network, você não deverá ver o container2 listado ao inspecionar a my-network:

$ docker network inspect my-network
[
    {
        "Name": "my-network",
        ...
        "Containers": {
            "container1": {
                ...
            }
        },
        ...
    }
]
✨ Verificar Solução e Praticar

Remover uma Rede

Nesta etapa final, você aprenderá como remover uma rede Docker quando ela não for mais necessária. A limpeza adequada de recursos não utilizados é uma parte importante do gerenciamento eficiente de ambientes Docker.

Tarefas

  1. Desconecte o container2 da my-network2 se ele ainda estiver conectado.
  2. Remova a rede my-network2 usando o comando docker network rm.
  3. Verifique se a my-network2 foi removida.

Requisitos

  • Realize todas as operações no diretório /home/labex/project.
  • Certifique-se de que nenhum container esteja conectado à my-network2 antes de removê-la.
  • Use o comando docker network ls para verificar a remoção da rede.

Exemplo

Após remover a my-network2, você não deverá vê-la listada ao executar docker network ls:

NETWORK ID     NAME         DRIVER    SCOPE
abcdef123456   my-network   bridge    local
ghijkl789012   bridge       bridge    local
mnopqr345678   host         host      local
stuvwx901234   none         null      local
✨ Verificar Solução e Praticar

Resumo

Parabéns por concluir o Desafio de Fundamentos de Rede Docker! Você navegou com sucesso pelos conceitos essenciais de redes no Docker, incluindo:

  1. Criação de redes Docker personalizadas
  2. Inicialização de containers em redes específicas
  3. Teste de conectividade entre containers
  4. Conexão de containers a múltiplas redes
  5. Desconexão de containers de redes
  6. Remoção de redes Docker

Essas habilidades formam a base de um gerenciamento eficaz de redes Docker e serão inestimáveis à medida que você trabalhar com aplicações containerizadas mais complexas. Lembre-se de que a configuração adequada da rede é crucial para o isolamento de containers, segurança e comunicação eficiente entre serviços.

Ao longo deste desafio, você aprendeu a criar ambientes isolados para seus containers, permitir a comunicação entre eles e gerenciar conexões de rede dinamicamente. Essas capacidades permitem projetar arquiteturas de rede sofisticadas que podem se adaptar a requisitos em constante mudança.

Ao continuar sua jornada com Docker, considere explorar tópicos avançados de rede, como redes overlay para configurações multi-host, plugins de rede e como a rede Docker se integra a plataformas de orquestração como o Kubernetes. Você também pode se aprofundar em conceitos de segurança de rede, como o uso de políticas de rede para controlar o fluxo de tráfego entre containers.

Continue praticando essas habilidades e você estará bem preparado para projetar e gerenciar arquiteturas de rede de containers sofisticadas em seus projetos futuros. Lembre-se: uma rede eficiente é a chave para construir aplicações containerizadas escaláveis, seguras e eficientes.