Introdução
Este laboratório oferece um guia prático para resolver o erro "docker-compose: command not found", um problema comum que os usuários do Docker encontram. O Docker Compose é uma ferramenta essencial para gerenciar aplicações Docker de múltiplos contêineres, e encontrar este erro pode impedir seu fluxo de trabalho. Ao completar este laboratório, você adquirirá as habilidades para solucionar e corrigir este problema, permitindo que você continue a desenvolver e implantar suas aplicações em contêineres de forma eficaz.

Este laboratório requer uma conexão com a internet para aprendizado, portanto, apenas usuários Pro podem iniciar a VM. Atualize sua conta para Pro.
Entendendo o Docker Compose e Verificando a Instalação
O que é Docker Compose?
Docker Compose é uma ferramenta que ajuda a definir e compartilhar aplicações de múltiplos contêineres. Com o Compose, você pode criar um arquivo YAML para configurar os serviços da sua aplicação e, em seguida, iniciar todos os serviços com um único comando. Ele simplifica o processo de gerenciamento de múltiplos contêineres que trabalham juntos.
Verificando se o Docker Compose está Instalado
Primeiramente, vamos verificar se o Docker Compose já está instalado em seu sistema. Abra um terminal e execute:
docker-compose --version
Você verá uma saída semelhante a:
docker-compose: command not found

No entanto, se você receber uma mensagem de erro como docker-compose: command not found, isso significa que o Docker Compose não está instalado ou não está configurado corretamente no PATH do seu sistema.
Verificando a Instalação do Docker
Antes de instalarmos o Docker Compose, vamos verificar se o próprio Docker está corretamente instalado. Execute:
docker --version
Você deve ver uma saída semelhante a:
Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3
Se você não vir essa saída, o Docker pode não estar corretamente instalado. No entanto, para este laboratório, focaremos em resolver o problema do Docker Compose.
Instalando o Docker Compose
Como confirmamos que o Docker Compose não está instalado ou não está acessível, vamos instalá-lo. Existem alguns métodos diferentes para instalar o Docker Compose, mas focaremos na abordagem mais direta para sistemas Ubuntu.
Método 1: Usando o gerenciador de pacotes apt
A maneira mais simples de instalar o Docker Compose é através do gerenciador de pacotes apt. Vamos fazer isso:
- Primeiro, configure o repositório e instale as dependências:
## Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
## Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Você deve ver uma saída mostrando o processo de atualização.
- Em seguida, instale o Docker Compose:
sudo apt install -y docker-compose-plugin
Você verá uma saída mostrando o progresso da instalação.
- Após a conclusão da instalação, verifique se funcionou verificando a versão:
docker compose version
Observação: Em instalações Docker mais recentes, o comando é docker compose (com um espaço) em vez de docker-compose (com um hífen).
Você deve ver uma saída semelhante a:
Docker Compose version v2.33.1
Método 2: Usando curl para instalar uma versão específica
Você pode pular este método se já instalou o Docker Compose usando o método apt.
Se o método apt não funcionou ou você precisa de uma versão específica, você pode instalar o Docker Compose diretamente:
- Crie um diretório para os plugins da CLI do Docker, se ele não existir:
mkdir -p ~/.docker/cli-plugins/
- Baixe o binário do Docker Compose:
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
Você verá uma barra de progresso enquanto o arquivo é baixado.
- Torne o binário executável:
chmod +x ~/.docker/cli-plugins/docker-compose
- Verifique a instalação:
docker compose version
Você deve ver uma saída mostrando a versão do Docker Compose.
Criando um Projeto Docker Compose Simples
Agora que instalamos o Docker Compose com sucesso, vamos criar um projeto Docker Compose simples para garantir que tudo esteja funcionando corretamente.
Criando um Diretório de Projeto
Primeiro, vamos criar um diretório para o nosso projeto Docker Compose:
mkdir -p ~/project/docker-compose-test
cd ~/project/docker-compose-test
Criando um Arquivo Docker Compose
Agora, vamos criar um arquivo Docker Compose simples que executará um servidor web Nginx básico. Crie um arquivo chamado docker-compose.yml usando o editor de texto nano:
nano docker-compose.yml
No editor, adicione o seguinte conteúdo:
version: "3"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
Esta configuração define:
- Um serviço chamado "web" usando a imagem Nginx mais recente
- Mapeamento de porta da porta 80 do contêiner para a porta 8080 do nosso host
- Um volume que mapeia um diretório local para a raiz web do Nginx
Pressione Ctrl+O e depois Enter para salvar o arquivo, e Ctrl+X para sair do nano.
Criando Conteúdo HTML
Vamos criar o diretório html e um arquivo index.html simples:
mkdir -p html
nano html/index.html
No editor, adicione o seguinte conteúdo HTML:
<!DOCTYPE html>
<html>
<head>
<title>Docker Compose Test</title>
</head>
<body>
<h1>Docker Compose is working!</h1>
<p>
If you can see this page, you have successfully resolved the
docker-compose issue.
</p>
</body>
</html>
Pressione Ctrl+O e depois Enter para salvar o arquivo, e Ctrl+X para sair do nano.
Executando o Projeto Docker Compose
Agora, vamos executar nosso projeto Docker Compose:
docker compose up -d
A flag -d executa os contêineres em modo detached (em segundo plano).
Você deve ver uma saída semelhante a:
Creating network "docker-compose-test_default" with the default driver
Creating docker-compose-test_web_1 ... done
Isso indica que o Docker Compose criou e iniciou seu contêiner com sucesso.
Verificando o Servidor Web
Vamos verificar se nosso servidor web está funcionando corretamente:
curl http://localhost:8080
Você deve ver o conteúdo HTML que criou anteriormente:
<!DOCTYPE html>
<html>
<head>
<title>Docker Compose Test</title>
</head>
<body>
<h1>Docker Compose is working!</h1>
<p>
If you can see this page, you have successfully resolved the
docker-compose issue.
</p>
</body>
</html>
Isso confirma que o Docker Compose está funcionando corretamente.

Gerenciando Aplicações Docker Compose
Agora que configuramos e executamos com sucesso uma aplicação Docker Compose, vamos aprender a gerenciá-la com vários comandos Docker Compose.
Verificando Contêineres em Execução
Para verificar o status dos seus contêineres Docker Compose, execute:
cd ~/project/docker-compose-test
docker compose ps
Você deve ver uma saída semelhante a:
NAME COMMAND SERVICE STATUS PORTS
docker-compose-test-web-1 "/docker-entrypoint.…" web running 0.0.0.0:8080->80/tcp
Isso mostra que seu contêiner do servidor web Nginx está em execução e o mapeamento de porta está ativo.
Visualizando Logs do Contêiner
Para visualizar os logs dos seus contêineres, execute:
docker compose logs
Isso exibirá os logs combinados de todos os contêineres em sua aplicação Docker Compose. Você deve ver uma saída que inclui mensagens de inicialização do Nginx.
Para visualizar os logs de um serviço específico, especifique seu nome:
docker compose logs web
Parando Sua Aplicação
Para parar sua aplicação Docker Compose sem remover os contêineres, execute:
docker compose stop
Você deve ver uma saída indicando que os contêineres estão sendo parados:
✔ Container docker-compose-test-web-1 Stopped
Para verificar se os contêineres foram parados, verifique seu status:
docker compose ps
Você deve ver que os contêineres não estão mais em execução.
Iniciando Sua Aplicação Novamente
Para iniciar seus contêineres parados novamente, execute:
docker compose start
Você deve ver uma saída indicando que os contêineres estão sendo iniciados:
✔ Container docker-compose-test-web-1 Started
Verifique se eles estão em execução novamente:
docker compose ps
Parando e Removendo Sua Aplicação
Quando terminar com sua aplicação Docker Compose, você pode parar e remover todos os contêineres, redes e volumes com um único comando:
docker compose down
Você deve ver uma saída semelhante a:
✔ Container docker-compose-test-web-1 Removed
✔ Network docker-compose-test_default Removed
Isso indica que seus contêineres foram parados e removidos, e a rede criada para eles também foi removida.
Solucionando Problemas Comuns do Docker Compose
Esta etapa é opcional. Você pode ignorá-la se não quiser praticar a solução de problemas do Docker Compose.
Mesmo depois de resolver o erro "docker-compose: command not found", você pode encontrar outros problemas comuns com o Docker Compose. Vamos explorar esses problemas e suas soluções.
Problema 1: Conflitos com Contêineres Existentes
Às vezes, você pode encontrar erros como:
ERROR: for web Cannot create container for service web: Conflict. The container name "/docker-compose-test-web-1" is already in use by container.
Isso acontece quando um contêiner com o mesmo nome já existe. Vamos ver como lidar com isso:
- Primeiro, verifique se existem contêineres existentes:
docker ps -a
Este comando lista todos os contêineres, incluindo os que foram parados.
- Se você vir um contêiner com um nome conflitante, você pode removê-lo:
docker rm -f docker-compose-test-web-1
Substitua docker-compose-test-web-1 pelo nome real do contêiner na sua saída.
Problema 2: Erros de Permissão Negada
Às vezes, você pode ver erros de permissão ao trabalhar com o Docker Compose. Isso geralmente ocorre porque os comandos Docker normalmente exigem privilégios de root. Se você vir um erro como:
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?
Você pode precisar usar sudo com seus comandos Docker Compose, ou garantir que seu usuário esteja no grupo Docker. Para adicionar seu usuário ao grupo Docker:
sudo usermod -aG docker $USER
Observação: Isso requer fazer logout e login novamente para ter efeito. Para este laboratório, podemos usar sudo com nossos comandos, se necessário.
Problema 3: Conflitos de Porta
Se você vir um erro como:
ERROR: for web Cannot start service web: driver failed programming external connectivity on endpoint: Bind for 0.0.0.0:8080 failed: port is already allocated
Significa que outro serviço já está usando a porta 8080. Para resolver isso:
- Encontre o que está usando a porta 8080:
sudo lsof -i :8080
- Pare esse serviço ou modifique seu
docker-compose.ymlpara usar uma porta diferente:
nano docker-compose.yml
Altere o mapeamento da porta de "8080:80" para algo como "8081:80", salve e saia.
- Inicie sua aplicação Docker Compose novamente:
docker compose up -d
Vamos Praticar a Correção de um Conflito de Porta
Vamos criar deliberadamente um conflito de porta e resolvê-lo:
- Crie um novo projeto Docker Compose com a mesma porta:
mkdir -p ~/project/another-test
cd ~/project/another-test
nano docker-compose.yml
- Adicione o seguinte conteúdo:
version: "3"
services:
web:
image: nginx:latest
ports:
- "8080:80"
Salve e saia.
- Inicie o novo serviço:
docker compose up -d
- Agora, volte para seu projeto original e tente iniciá-lo:
cd ~/project/docker-compose-test
docker compose up -d
Você deve ver um erro de conflito de porta.
- Modifique seu docker-compose.yml original para usar a porta 8081 em vez de 8080:
nano docker-compose.yml
Altere "8080:80" para "8081:80", salve e saia.
- Tente iniciá-lo novamente:
docker compose up -d
Agora, ambos os serviços devem estar em execução, um na porta 8080 e outro na porta 8081.
- Limpe parando e removendo ambos os projetos:
docker compose down
cd ~/project/another-test
docker compose down
Resumo
Parabéns por concluir este laboratório sobre como resolver o erro "docker-compose: command not found". Você conseguiu com sucesso:
- Verificar o status da instalação do Docker e do Docker Compose
- Instalar o Docker Compose usando diferentes métodos
- Criar e executar uma aplicação Docker Compose simples
- Aprender comandos essenciais do Docker Compose para gerenciar aplicações
- Explorar problemas comuns do Docker Compose e suas soluções
Essas habilidades serão valiosas ao trabalhar com aplicações Docker de múltiplos contêineres no futuro. As técnicas de solução de problemas que você aprendeu podem ser aplicadas a muitos outros problemas relacionados ao Docker, tornando seu fluxo de trabalho de desenvolvimento mais suave e eficiente.



