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
- Crie uma nova rede do tipo bridge chamada
my-networkusando o comandodocker network create. - 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
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
- Inicie um container chamado
container1usando a imagemnginxe conecte-o àmy-network. - Inicie outro container chamado
container2usando a imagemhttpde conecte-o àmy-network. - 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
--networkao 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
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
- Use o comando
docker execpara abrir um shell nocontainer1. - De dentro do
container1, use o comandocurlpara acessar ocontainer2pelo seu nome de container.
Requisitos
- Realize todas as operações no diretório
/home/labex/project. - Use
container2como o hostname no seu comandocurl. - O comando
curldeve acessar a porta HTTP padrão (80) nocontainer2.
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>
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
- Crie uma nova rede bridge chamada
my-network2. - Conecte o
container2àmy-network2mantendo sua conexão com amy-network. - Verifique se o
container2está agora conectado a ambas as redes.
Requisitos
- Realize todas as operações no diretório
/home/labex/project. - Use o comando
docker network connectpara adicionar ocontainer2àmy-network2. - Use o comando
docker inspectpara 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": {
...
}
}
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
- Desconecte o
container2damy-networkusando o comandodocker network disconnect. - Verifique se o
container2não está mais conectado àmy-network.
Requisitos
- Realize todas as operações no diretório
/home/labex/project. - Use o comando
docker network disconnectpara remover ocontainer2damy-network. - Use o comando
docker network inspectpara 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": {
...
}
},
...
}
]
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
- Desconecte o
container2damy-network2se ele ainda estiver conectado. - Remova a rede
my-network2usando o comandodocker network rm. - Verifique se a
my-network2foi removida.
Requisitos
- Realize todas as operações no diretório
/home/labex/project. - Certifique-se de que nenhum container esteja conectado à
my-network2antes de removê-la. - Use o comando
docker network lspara 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
Resumo
Parabéns por concluir o Desafio de Fundamentos de Rede Docker! Você navegou com sucesso pelos conceitos essenciais de redes no Docker, incluindo:
- Criação de redes Docker personalizadas
- Inicialização de containers em redes específicas
- Teste de conectividade entre containers
- Conexão de containers a múltiplas redes
- Desconexão de containers de redes
- 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.



