Introdução
Docker Swarm é uma poderosa solução de orquestração de contêineres que permite aos desenvolvedores transformar vários hosts Docker em uma infraestrutura unificada e escalável. Este tutorial abrangente fornece insights aprofundados na criação, configuração e gerenciamento de clusters Docker Swarm, cobrindo conceitos essenciais, tipos de nós, estratégias de implantação de serviços e melhores práticas para a construção de ambientes robustos de contêineres.
Conceitos Básicos do Docker Swarm
Introdução ao Docker Swarm
Docker Swarm é uma solução nativa de agrupamento e orquestração de contêineres para ambientes Docker. Permite que desenvolvedores criem e gerenciem um cluster de nós Docker, transformando vários hosts Docker em um único host Docker virtual.
Conceitos Principais
Arquitetura do Cluster Swarm
graph TD
A[Gerente Swarm] --> B[Nó Trabalhador 1]
A --> C[Nó Trabalhador 2]
A --> D[Nó Trabalhador 3]
Tipos de Nós Swarm
| Tipo de Nó | Descrição | Responsabilidades |
|---|---|---|
| Nó Gerente | Controla o estado do cluster | Orquestração, Agendamento |
| Nó Trabalhador | Executa cargas de trabalho de contêineres | Execução de serviços |
Inicializando um Cluster Swarm
## Inicializar Swarm no nó primário
docker swarm init --advertise-addr 192.168.1.100
## Gerar token de junção para nós trabalhadores
docker swarm join-token worker
## Adicionar nós trabalhadores ao cluster
docker swarm join --token < token > 192.168.1.100:2377
Principais Características
- Design descentralizado
- Modelo de serviço declarativo
- Escalonamento e atualizações progressivas
- Descoberta de serviço
- Balanceamento de carga
- Comunicação segura
Exemplo de Implantação de Serviço
## Criar um serviço replicado
docker service create --replicas 3 --name web nginx
## Escalar o serviço
docker service scale web=5
## Atualizar o serviço
docker service update --image nginx:latest web
Configuração do Cluster
Topologia do Cluster Swarm
graph TD
A[Nó Gerente] --> B[Nó Trabalhador 1]
A --> C[Nó Trabalhador 2]
A --> D[Nó Trabalhador 3]
Estratégias de Inicialização de Nós
Configuração do Nó Gerente
## Inicializar o cluster Swarm no gerente primário
docker swarm init --advertise-addr 192.168.1.100
## Visualizar tokens de junção do cluster
docker swarm join-token manager
docker swarm join-token worker
Configuração do Nó Trabalhador
## Adicionar o nó trabalhador ao cluster
docker swarm join \
--token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxx \
192.168.1.100:2377
Parâmetros de Configuração do Cluster
| Parâmetro | Descrição | Valor Padrão |
|---|---|---|
| Endereço de Divulgação | Interface de rede do nó | IP primário |
| Porta de Escuta | Porta de comunicação Swarm | 2377 |
| Rótulos de Nó | Metadados para seleção de nós | Nenhum |
Configuração Avançada do Cluster
## Adicionar rótulos de nó personalizados
docker node update --label-add type=frontend worker1
## Definir disponibilidade do nó
docker node update --availability drain worker2
Configuração de Rede
## Criar rede overlay
docker network create \
--driver overlay \
--subnet 10.0.0.0/24 \
my-network
Gerenciamento de Serviços
Fluxo de Trabalho de Implantação de Serviços
graph LR
A[Criar Serviço] --> B[Implantar Contêineres]
B --> C[Escalar Serviço]
C --> D[Atualizar Serviço]
D --> E[Monitorar Desempenho]
Criação Básica de Serviço
## Implantar serviço nginx com 3 réplicas
docker service create \
--name web-service \
--replicas 3 \
--publish 80:80 \
nginx:latest
Opções de Configuração de Serviço
| Opção | Descrição | Exemplo |
|---|---|---|
| --replicas | Número de instâncias de contêiner | 3 |
| --update-parallelism | Atualizações concorrentes | 2 |
| --constraint | Regras de posicionamento de nós | node.labels.type==frontend |
Estratégias de Escalonamento de Serviço
## Escalar serviço dinamicamente
docker service scale web-service=5
## Escalonamento horizontal
docker service update \
--replicas-max-per-node 2 \
web-service
Configuração de Balanceamento de Carga
## Criar serviço com balanceamento de carga personalizado
docker service create \
--name api-service \
--replicas 4 \
--publish mode=host,target=8080,published=80 \
--update-delay 10s \
api-image:latest
Mecanismos de Atualização de Serviço
## Estratégia de atualização progressiva
docker service update \
--image nginx:latest \
--update-parallelism 2 \
--update-delay 10s \
web-service
Monitoramento de Serviço
## Listar serviços ativos
docker service ls
## Inspecionar serviço específico
docker service ps web-service
Resumo
Dominando o Docker Swarm, desenvolvedores e administradores de sistemas podem gerenciar eficazmente aplicações containerizadas em sistemas distribuídos. O tutorial demonstra técnicas-chave para inicializar clusters, configurar topologias de nós, implantar serviços e aproveitar recursos avançados, como descoberta de serviços, balanceamento de carga e comunicação segura. Compreender esses fundamentos capacita as equipes a construir infraestruturas de contêineres escaláveis, resilientes e com maior eficiência operacional.



