JanelasMacSoftwareConfiguraçõesSegurançaProdutividadeLinuxAndroidDesempenhoConfiguraçãoApple Tudo

Como usar o Docker Compose no Linux

Editado 1 Uma semana atrás por ExtremeHow Equipe Editorial

DockerContêineresImplantação de AplicaçõesDocker ComposeOrquestraçãoConfiguraçãoScriptingDevOpsLinha de comandoMulti-Contêiner

Como usar o Docker Compose no Linux

Tradução atualizada 1 Uma semana atrás

O Docker Compose é uma ferramenta usada para definir e executar aplicações Docker de múltiplos contêineres. Com o Docker Compose, você pode usar um arquivo YAML para configurar os serviços da sua aplicação e, em seguida, usar um único comando para criar e iniciar todos os serviços a partir da sua configuração. Isso é incrivelmente útil para trabalhar com aplicações complexas que contêm muitos serviços interligados. O objetivo deste guia é explicar o uso do Docker Compose no Linux de maneira muito detalhada.

Entendendo Docker e Docker Compose

Antes de mergulhar no Docker Compose, é importante entender o que é o Docker. O Docker é uma plataforma que permite aos desenvolvedores e administradores de sistemas empacotar aplicações em contêineres — componentes executáveis padronizados que combinam o código-fonte da aplicação com as bibliotecas do sistema operacional e dependências necessárias para executar esse código em qualquer ambiente.

O Docker Compose leva isso um passo adiante, permitindo que você configure e inicie múltiplos contêineres Docker como um único serviço. Isso significa que você pode gerenciar todas as dependências da sua aplicação usando um arquivo simples chamado docker-compose.yml. Este arquivo contém informações sobre qual imagem executar, quais portas expor, mapeamentos de volumes e mais.

Configurando Docker e Docker Compose no Linux

O primeiro passo para usar o Docker Compose é garantir que o Docker esteja instalado e em execução na sua máquina Linux. A maioria das distribuições Linux modernas vem com o Docker em seus repositórios oficiais, mas você também pode instalá-lo a partir do repositório oficial do Docker para obter a versão mais recente.

# Atualizar o índice de pacotes apt e instalar pacotes para permitir que apt use um repositório via HTTPS
sudo apt-get update -y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y

# Adicionar a chave GPG oficial do Docker e verificar
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Configurar o repositório estável
sudo add-apt-repository \
"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

# Instalar o Docker CE
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

# Verificar a instalação do Docker
sudo docker run hello-world

Uma vez instalado o Docker, o próximo passo é instalar o Docker Compose. Ao contrário do Docker, o Compose é uma ferramenta separada. Você pode baixar o Docker Compose da página de lançamento do GitHub.

# Baixar a versão estável atual do Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# Aplicar permissões executáveis ao binário
sudo chmod +x /usr/local/bin/docker-compose

# Verificar se o Docker Compose está instalado corretamente
docker-compose --version

Entendendo o arquivo docker-compose.yml

O arquivo docker-compose.yml é o núcleo do uso do Docker Compose. É aqui que você define todos os seus serviços (essencialmente, os contêineres da sua aplicação) e como eles interagem entre si. A estrutura do arquivo docker-compose.yml é bastante simples. Normalmente, ele começa definindo a versão do Compose que está sendo usada, seguido de uma lista de serviços.

Aqui está um exemplo básico de um arquivo docker-compose.yml:

version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: exemplo

No exemplo acima, o arquivo de composição está usando a versão 3.8. Ele define dois serviços, web e database. O serviço web usa a imagem Nginx e mapeia a porta 80 do contêiner para a porta 80 do host. O serviço database usa a imagem MySQL com a senha root especificada.

Executando aplicações com Docker Compose

Uma vez que você configurou seu arquivo docker-compose.yml, sua aplicação de múltiplos serviços pode ser executada com um comando simples. Navegue até o diretório que contém o arquivo docker-compose.yml e execute:

docker-compose up

O comando docker-compose up procura pelo arquivo docker-compose.yml no diretório atual, cria as imagens necessárias se elas não estiverem disponíveis localmente e inicia os serviços definidos.

Se você quiser executar a aplicação em segundo plano (modo isolado), pode usar a opção -d:

docker-compose up -d

Gerenciando seu ambiente Docker Compose

O Docker Compose oferece vários comandos para ajudar a gerenciar seu ambiente:

  1. docker-compose ps: Exibe o status dos serviços definidos no arquivo de composição.
  2. docker-compose start: Inicia um contêiner existente para um serviço.
  3. docker-compose stop: Para os contêineres em execução, sem removê-los.
  4. docker-compose down: Para e remove todos os contêineres definidos no arquivo docker-compose.yml.
  5. docker-compose logs: Recupera os logs de um serviço.

Usando volumes e redes no Docker Compose

O Docker Compose também permite que você defina volumes e redes em seu arquivo docker-compose.yml. Volumes são usados para persistir dados e redes ajudam na comunicação entre serviços.

Para definir um volume, adicione o seguinte na seção de Serviços:

services:
database:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql

volumes:
db_data:

Esta configuração cria um volume nomeado db_data e o monta em /var/lib/mysql dentro do contêiner do serviço de banco de dados, que armazena os dados do MySQL.

A rede também pode ser personalizada:

services:
frontend:
image: node:14
networks:
- frontend-network
backend:
image: node:14
networks:
- backend-network

networks:
frontend-network:
backend-network:

Dimensionando serviços com Docker Compose

Uma característica poderosa do Docker Compose é a capacidade de dimensionar serviços. Isso é especialmente útil para simular condições mais realistas em um ambiente de desenvolvimento. Você pode dimensionar um serviço com a opção --scale.

docker-compose up --scale web=3

O comando acima iniciará três instâncias do serviço web.

Executando comandos dentro dos contêineres

Você pode executar comandos arbitrários dentro dos seus serviços em execução usando docker-compose exec:

docker-compose exec web bash

Este comando abre um shell bash dentro do contêiner do serviço web em execução.

Vinculando Docker Compose a uma única rede

Por padrão, o Docker Compose cria uma rede padrão para seus serviços. No entanto, você pode vincular todos os serviços à mesma rede definindo uma rede e especificando-a em cada serviço:

version: '3.8'
services:
web:
image: nginx:latest
networks:
- custom-network
database:
image: mysql:5.7
networks:
- custom-network

networks:
custom-network:

Os serviços web e database estão ambos conectados à custom-network, permitindo que se comuniquem de forma independente.

Conclusão

O Docker Compose é uma ferramenta robusta que simplifica o processo de gerenciamento de aplicações Docker de múltiplos contêineres. Ao definir serviços no arquivo docker-compose.yml, você pode rapidamente implantar e gerenciar o stack da sua aplicação. A chave para o uso eficaz do Docker Compose é entender as opções de configuração do arquivo docker-compose.yml, incluindo serviços, volumes e redes.

Este guia abrangente fornece uma visão geral de como configurar Docker e Docker Compose no Linux, criar um arquivo de composição e gerenciar sua aplicação. Com este conhecimento, você pode efetivamente alavancar o Docker Compose para lidar com ambientes complexos baseados em Linux. Pratique com suas próprias aplicações para se familiarizar mais e personalize as configurações do Docker Compose para atender às necessidades específicas.

Se você encontrar algo errado com o conteúdo do artigo, você pode


Comentários