Introdução
Este tutorial fornece um guia abrangente sobre o trabalho com Docker Compose, focando na resolução do erro "docker: 'compose' não é um comando docker". Você aprenderá a instalar e configurar o Docker Compose, construir e gerenciar suas aplicações multi-container e explorar as melhores práticas para um uso eficaz do Docker Compose.
Fundamentos do Docker
Introdução à Contenção Docker
Docker é uma poderosa tecnologia de contenção que revoluciona o desenvolvimento e implantação de aplicações. A tecnologia de contenção permite aos desenvolvedores empacotar aplicações com todas as suas dependências, garantindo um desempenho consistente em diferentes ambientes de computação.
Conceitos Principais do Docker
O que é Docker?
Docker é uma plataforma de código aberto para contenção que permite aos desenvolvedores automatizar a implantação, escalonamento e gerenciamento de aplicações. Ele fornece uma alternativa leve às máquinas virtuais tradicionais, criando ambientes isolados chamados contêineres.
Componentes Principais do Docker
| Componente | Descrição |
|---|---|
| Docker Engine | Ambiente de tempo de execução principal para criar e executar contêineres |
| Docker Image | Modelo somente leitura contendo o código da aplicação e dependências |
| Docker Container | Instância executável de uma imagem Docker |
| Dockerfile | Arquivo de texto definindo as instruções de construção do contêiner |
Arquitetura Docker
graph TD
A[Cliente Docker] --> B[Demônio Docker]
B --> C[Tempo de Execução do Contêiner]
B --> D[Registro de Imagens]
D --> E[Docker Hub]
Comandos e Exemplos Básicos do Docker
Instalando Docker no Ubuntu 22.04
## Atualizar pacotes do sistema
sudo apt update
## Instalar dependências do Docker
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Adicionar a chave GPG oficial do Docker
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Configurar o repositório Docker
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Instalar o Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Operações Básicas do Docker
## Extrair uma imagem do Docker Hub
## Listar imagens disponíveis
## Executar um contêiner
## Listar contêineres em execução
## Parar um contêiner
Benefícios da Tecnologia de Contêineres
A contenção Docker oferece várias vantagens:
- Ambientes de aplicação consistentes
- Implantação e escalonamento mais rápidos
- Consumo de recursos reduzido
- Fluxo de trabalho de desenvolvimento aprimorado
- Independência de plataforma
Casos de Uso para Contêineres Docker
Docker é amplamente utilizado em:
- Arquitetura de microserviços
- Integração Contínua/Entrega Contínua (CI/CD)
- Desenvolvimento de aplicações nativas de nuvem
- Ambientes de desenvolvimento e teste
Fluxo de Trabalho do Docker Compose
Compreendendo o Docker Compose
Docker Compose é uma ferramenta para definir e executar aplicações Docker multi-contêiner. Permite aos desenvolvedores usar um arquivo YAML para configurar serviços de aplicação, redes e volumes, simplificando o processo de gerenciamento de ambientes complexos de contêineres.
Arquitetura do Docker Compose
graph TD
A[Docker Compose] --> B[docker-compose.yml]
B --> C[Serviço 1]
B --> D[Serviço 2]
B --> E[Serviço 3]
C --> F[Rede]
D --> F
E --> F
Configuração do Docker Compose
Estrutura do Arquivo YAML
| Chave | Descrição |
|---|---|
| version | Versão do formato do arquivo Compose |
| services | Define contêineres individuais |
| networks | Configura a rede de contêineres |
| volumes | Gerencia o armazenamento de dados persistentes |
Exemplo Prático: Implantação de Aplicação Web
docker-compose.yml de Exemplo
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./website:/usr/share/nginx/html
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: secretpassword
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Comandos do Docker Compose
## Instalar o Docker Compose no Ubuntu 22.04
sudo apt update
sudo apt install docker-compose
## Validar o arquivo compose
docker-compose config
## Iniciar a aplicação multi-contêiner
docker-compose up -d
## Visualizar contêineres em execução
docker-compose ps
## Parar e remover contêineres
docker-compose down
Técnicas de Orquestração de Serviços
Docker Compose permite orquestração avançada de serviços:
- Definição de dependências entre contêineres
- Gerenciamento de variáveis de ambiente
- Configuração de conexões de rede
- Controle da ordem de inicialização dos contêineres
Escalabilidade e Flexibilidade
Aplicações multi-contêineres se beneficiam de:
- Arquitetura modular
- Escalabilidade horizontal fácil
- Gerenciamento de configuração simplificado
- Ambientes de desenvolvimento consistentes
Técnicas Avançadas do Docker
Configuração de Rede Docker
Tipos de Rede
| Modo de Rede | Descrição |
|---|---|
| Bridge | Modo de rede padrão |
| Host | Usar diretamente a rede host |
| Overlay | Comunicação multi-host |
| Macvlan | Atribuir endereço MAC |
graph TD
A[Rede Docker] --> B[Rede Bridge]
A --> C[Rede Host]
A --> D[Rede Overlay]
A --> E[Rede Macvlan]
Criação de Rede Personalizada
## Criar rede bridge personalizada
docker network create --driver bridge custom_network
## Listar redes
docker network ls
## Inspecionar detalhes da rede
docker network inspect custom_network
Gerenciamento de Recursos do Contêiner
Restrições de Recursos
services:
webapp:
image: nginx
deploy:
resources:
limits:
cpus: "0.50"
memory: 512M
reservations:
cpus: "0.25"
memory: 256M
Gerenciamento de Volumes Docker
## Criar volume nomeado
docker volume create app_data
## Montar volume no contêiner
docker run -v app_data:/app/data nginx
## Listar volumes
docker volume ls
## Remover volumes não utilizados
docker volume prune
Otimização do Dockerfile
## Exemplo de build em várias etapas
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin
ENTRYPOINT ["myapp"]
Depuração Avançada
## Inspeção de logs do contêiner
## Monitoramento de recursos em tempo real
## Detalhes do processo do contêiner
Melhorias de Segurança
Opções de Segurança em Tempo de Execução
## Executar contêiner com sistema de arquivos somente leitura
docker run --read-only nginx
## Limitar capacidades do contêiner
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
Monitoramento de Desempenho
## Informações do Docker em todo o sistema
docker system info
## Análise de uso do disco
docker system df
## Remover recursos não utilizados
docker system prune -a
Resumo
Ao final deste tutorial, você terá um profundo entendimento do Docker Compose e como solucionar o erro "docker: 'compose' não é um comando docker". Você será capaz de configurar, gerenciar e escalar suas aplicações Docker Compose com confiança, seguindo as melhores práticas do setor para um desempenho e manutenibilidade ótimos.



