Introdução
Este tutorial guia você através do uso do Docker Compose com uma configuração de rede host em uma VM da nuvem LabEx. Docker Compose é uma ferramenta que ajuda a gerenciar múltiplos contêineres – pense em contêineres como ambientes leves e isolados que executam aplicações como um servidor web. Normalmente, o Docker isola a rede de um contêiner da máquina host (a VM em que você está trabalhando), mas a opção de rede host permite que o contêiner compartilhe a rede do host diretamente. Isso é útil quando sua aplicação precisa agir como se estivesse rodando diretamente no host, como acessar as portas do host sem configuração extra. Ao final, você configurará o Docker Compose, criará, implantará e testará um serviço web simples usando a rede host. O Docker já está pré-instalado no seu ambiente LabEx, mas também garantiremos que o Docker Compose esteja pronto.
Este Lab requer uma conexão com a internet para aprendizado, portanto, apenas usuários Pro podem iniciar a VM. Atualize sua conta para Pro.
Configurar o Docker Compose
Antes de mergulhar na configuração, vamos garantir que o Docker Compose esteja disponível na sua VM da nuvem LabEx. Embora o Docker já esteja pré-instalado, o Docker Compose – uma ferramenta separada para gerenciar configurações de múltiplos contêineres – pode não estar. Vamos instalá-lo rapidamente usando o terminal.
Abra o terminal na sua VM LabEx. O prompt deve mostrar /home/labex/project – este é o seu diretório de trabalho padrão. Execute estes comandos um por um:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Aqui está o que esses comandos fazem:
curl: Baixa o binário do Docker Compose da sua versão oficial no GitHub. A URL usa$(uname -s)-$(uname -m)para corresponder ao sistema da sua VM (por exemplo, Linux-x86_64). A versão 2.20.2 é estável e amplamente compatível.-o /usr/local/bin/docker-compose: Salva-o em/usr/local/bin, um local padrão para ferramentas executáveis.sudogarante que você tenha permissão para escrever lá.chmod +x: Torna o arquivo executável, para que você possa executá-lo como um comando. Novamente,sudoconcede os direitos necessários.
Para confirmar que funcionou, execute:
docker-compose --version
Você deve ver uma saída como Docker Compose version v2.20.2. Se você receber "command not found", execute os comandos novamente com cuidado – verifique se há erros de digitação ou problemas de internet (a VM precisa de acesso à web para baixar). Esta etapa garante que você esteja pronto para usar docker-compose nas próximas etapas.
Criar um Arquivo Docker Compose com Rede Host
Agora que o Docker Compose está pronto, vamos criar um arquivo docker-compose.yml – seu projeto para executar um serviço web com rede host. Usaremos o nano, um editor de texto de terminal simples e amigável para iniciantes.
Para criar e editar o arquivo, siga estes passos:
No seu terminal, certifique-se de estar no diretório do projeto:
cd /home/labex/projectCrie e abra o arquivo com nano:
nano docker-compose.ymlDigite ou cole o seguinte conteúdo no nano:
version: "3"
services:
web:
image: nginx:latest
network_mode: host
Aqui está o que cada parte significa:
version: "3": Define o formato do arquivo Docker Compose. A versão 3 é um padrão comum, como escolher um modelo.services: Lista os contêineres (ou "serviços") a serem executados, como trabalhadores para o seu projeto.web: Nomeia seu serviço – chame-o como quiser, mas "web" se encaixa em um servidor web.image: nginx:latest: Especifica o software – Nginx, um servidor web popular, comlatestpuxando a versão mais recente do Docker Hub (uma biblioteca de imagens de contêiner).network_mode: host: A configuração chave. Normalmente, o Docker dá aos contêineres sua própria rede privada, isolando-os do host. O modohostpermite que o contêiner use a rede da VM diretamente, para que o Nginx possa acessar as portas do host (como 80) sem etapas extras.
- Para salvar o arquivo no nano:
- Pressione
Ctrl + Xpara sair - Pressione
Ypara confirmar a gravação das alterações - Pressione
Enterpara confirmar o nome do arquivo
- Pressione
O arquivo agora está salvo em /home/labex/project, e você está pronto para a próxima etapa.
Implantar a Aplicação Docker Compose
Com o seu arquivo docker-compose.yml configurado, vamos implantar o contêiner Nginx – dizendo ao Docker para iniciá-lo com base no seu projeto. Vá para o terminal para isso.
No terminal em /home/labex/project, execute:
docker-compose up -d
Analisando:
docker-compose: A ferramenta que lêdocker-compose.ymle gerencia seus serviços.up: Inicia o serviçoweb(Nginx) definido no arquivo.-d: Executa-o em segundo plano (modo "detached"), para que seu terminal permaneça livre.
O Docker Compose fará o download da imagem nginx:latest do Docker Hub se ela ainda não estiver na VM (você pode ver mensagens de download), e então iniciará o contêiner. Verifique se está em execução com:
docker ps
Isso lista os contêineres ativos. Procure por nginx:latest em "IMAGE" e "Up" em "STATUS" (por exemplo, "Up 5 seconds"). Você não verá mapeamentos de porta (como 0.0.0.0:80->80/tcp) porque network_mode: host usa as portas do host diretamente. Se nada aparecer, certifique-se de estar em /home/labex/project (pwd para verificar) e execute novamente docker-compose up -d.
Testar o Serviço Nginx na Rede Host
Agora que o contêiner está em execução com rede host, vamos testar se o Nginx serve páginas web na porta 80 do host – a porta web padrão.
No terminal em /home/labex/project, execute:
curl localhost:80
O que está acontecendo:
curl: Busca dados de um endereço web, como um navegador baseado em terminal.localhost:80: Conecta-se à própria VM (localhost) na porta 80. Comnetwork_mode: host, o Nginx do contêiner usa a rede do host, então sua porta 80 é a porta 80 do host.
Você deve ver HTML começando com <!DOCTYPE html> – a página de boas-vindas padrão do Nginx. Normalmente, o Docker isola as redes de contêineres, exigindo mapeamento de portas (por exemplo, porta 80 do host para a porta 80 do contêiner). O modo host ignora isso, permitindo que o Nginx se vincule diretamente à porta 80 da VM.
Se você receber "connection refused" (conexão recusada), verifique a Etapa 3 – execute docker ps para confirmar que o contêiner está "Up". Reinicie com docker-compose up -d se necessário, ou verifique o Docker com sudo service docker status. Sem navegador aqui, então curl é sua ferramenta de teste.
Explorar Logs e Limpar
Vamos verificar os logs do contêiner para ver o que está acontecendo dentro – uma habilidade chave de solução de problemas – e então limpar removendo-o.
Verificar Logs
Execute:
docker-compose logs web
docker-compose logs: Mostra a saída dos seus serviços.web: Direciona o serviçowebdodocker-compose.yml.
Procure por linhas como "nginx starting" ou "listening on 0.0.0.0:80". Se você usou curl, pode ver "GET /" registrado. Erros (por exemplo, "port 80 failed") também seriam exibidos aqui – útil se o Nginx parar.
Limpar
Execute:
docker-compose down
docker-compose down: Para e remove o contêiner, liberando a porta 80 e organizando.
Verifique com:
docker ps
Nenhuma linha nginx significa que ele foi removido. Se persistir, execute novamente docker-compose down. O docker-compose.yml permanece, então você pode reiniciar mais tarde com docker-compose up -d. Isso encerra o ciclo de vida: configuração, implantação, teste e remoção.
Solução de Problemas e Melhores Práticas
Aqui está como lidar com soluços e usar o Docker Compose com sabedoria.
Dicas de Solução de Problemas
- Contêiner Não Iniciando: Se
docker psestiver vazio, verifiquedocker-compose logs webpara erros como "port in use" (porta em uso). Libere a porta 80 comsudo lsof -i :80esudo kill <PID>, entãodocker-compose up -d. - Nenhuma Resposta do
curl: Confirme que o contêiner está em execução (docker ps) e que o Docker está rodando (sudo service docker status). Reinicie comdocker-compose up -dousudo service docker restart. - Problemas com Arquivos: Se
docker-compose upnão conseguir encontrar o arquivo, verifique se você está em/home/labex/project(pwd) e sedocker-compose.ymlexiste (ls).
Melhores Práticas
- Limite o Uso de Rede Host: É simples, mas ignora o isolamento, arriscando a segurança se outros serviços estiverem em execução. Use-o para laboratórios, não para produção, a menos que seja necessário.
- Verifique as Portas Antecipadamente: Teste com
sudo netstat -tuln | grep :80– limpe a porta 80 primeiro. - Mantenha os Arquivos: Salve
docker-compose.ymlem/home/labex/projectpara reutilização. - Monitore os Logs: Verifique regularmente os logs para identificar problemas precocemente.
Esses hábitos tornam seu trabalho com Docker confiável e ensinam habilidades essenciais.
Resumo
Você instalou o Docker Compose, criou um arquivo docker-compose.yml com rede host, implantou um contêiner Nginx, testou-o, verificou os logs e fez a limpeza. A rede host permite que os contêineres usem a rede do host diretamente, ignorando o isolamento do Docker – um truque poderoso. Essas etapas constroem uma base para gerenciar aplicativos Docker Compose e solucionar problemas, preparando você para projetos maiores.



