- dezembro 8, 2025
- João Pedro
- 7:59 pm
- João Pedro
O Docker é uma plataforma de virtualização baseada em contêineres que permite empacotar, distribuir e executar aplicativos junto com todas as suas dependências de forma isolada. Ele simplifica o desenvolvimento e a implantação, criando ambientes consistentes em diferentes sistemas, garantindo portabilidade e melhor aproveitamento de recursos. Cada contêiner funciona como uma unidade leve e autossuficiente, possibilitando que aplicações sejam executadas de maneira uniforme em qualquer ambiente compatível com Docker.
No entanto, ter apenas um servidor com Docker não garante alta disponibilidade. Se esse servidor falhar, todas as aplicações serão afetadas. É nesse cenário que o Docker Swarm se torna uma solução ideal, permitindo distribuir serviços entre vários servidores e garantindo resiliência e continuidade das aplicações.
No Docker Swarm é possível garantir alta disponibilidade, redundância de serviços e uma melhor escalabilidade da infraestrutura. Ele permite distribuir contêineres entre vários servidores, garantindo que, se um nó falhar, outro assuma automaticamente as cargas de trabalho. Dessa forma, as aplicações permanecem acessíveis, reduzindo riscos de indisponibilidade e trazendo mais segurança para o ambiente produtivo.
Além disso, o Swarm facilita o balanceamento de carga, atualizações sem downtime e a expansão dos serviços conforme a necessidade. Em resumo, ele transforma um conjunto de servidores em um cluster unificado, mais eficiente, resiliente e preparado para lidar com demandas variáveis.
Todo o processo de gerenciamento e orquestração no Docker Swarm é realizado pelos nós Manager, que tomam decisões sobre escalonamento, criação de serviços, distribuição de tarefas e monitoramento do cluster. Já os nós Worker têm como principal função executar os contêineres, recebendo instruções dos Managers e mantendo os serviços em funcionamento.
IMPORTANTE
Para que o Swarm continue operando corretamente, é necessário que mais de 50% dos nós Manager estejam ativos, garantindo o quorum para tomada de decisões. Por esse motivo, recomenda-se trabalhar com um número ímpar de Managers, reduzindo o risco de empates e aumentando a resiliência do cluster, como é visto na imagem acima.
Vamos Para a Prática
Considerando que você já possui o Debian 12 instalado em seu laboratório, iremos montar um ambiente semelhante ao apresentado na imagem: um cluster com 3 nós Manager e 2 nós Worker, garantindo redundância no plano de controle e capacidade para execução dos serviços.
Primeiro, vamos atualizar a lista de pacotes disponíveis nos repositórios e, em seguida, atualizar os pacotes instalados no sistema.
sudo apt update && apt upgrade -y
Instalando Algumas dependências
Antes de prosseguir com a instalação, é importante garantir que algumas dependências estejam presentes no sistema. Esses pacotes são responsáveis por permitir o uso de repositórios HTTPS, gerenciar certificados, realizar downloads e adicionar fontes externas de software — algo essencial para instalar ferramentas que não estão disponíveis nativamente no repositório padrão do sistema.
Para instalar todas essas dependências de uma vez, execute o comando abaixo:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Instalando o Docker Engine no Debian 12 Bookworm
Com as dependências previamente configuradas, podemos iniciar o processo de instalação do Docker. Utilizaremos o Docker Community Edition (Docker CE), uma versão gratuita e open-source, amplamente utilizada para ambientes de desenvolvimento e produção.
O primeiro passo consiste em adicionar a chave GPG oficial do Docker, responsável por validar a integridade dos pacotes que serão baixados. Em seguida, iremos adicionar o repositório oficial ao sistema, garantindo que as versões instaladas sejam sempre atualizadas e compatíveis com o Debian 12 (Bookworm).
Primeiro vamos baixar a chave GPG
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Em seguida vamos adicionar o repositório oficial do Docker na lista de repositórios do APT, permitindo que o Docker seja instalado diretamente através do apt install com versões atualizadas e suportadas para o Debian 12.
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Instalando o Docker Engine no Debian 12 Bookworm
Agora Vamos atualizar a lista de pacotes nos repositórios e depois instalar o Docker Engine e o Docker CLI
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io -y
Tudo ocorrendo bem é hora de iniciar o serviço do docker e habilitar a inicialização do serviço junto com o sistema Operacional.
sudo systemctl start docker
sudo systemctl enable docker
Depois que p comando acima for executado com êxito, porquestão de boas práticas, considere adicionar o usuário conectado no momento ao grupo docker, isso permite que você execute o docker sem invocar o sudo
sudo usermod -aG docker $USER
newgrp docker
Se tudo fluiu bem com esse comando abaixo deverá retornar a versão do docker
docker --version
O sistema retornará algo como o descrito abaixo:
root@docker05:~# docker --version
Docker version 29.1.2, build 890dcca
root@docker05:~#
Instalando Docker Compose
O Docker Compose é uma ferramenta simples que fornece uma maneira de orquestrar vários contêineres para trabalharem juntos, o que torna a implantação usando um yaml arquivo. Depois de instalar o Docker, você pode prosseguir com a instalação do Docker Compose.
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Configurando a permissão de execução para o arquivo baixado
sudo chmod +x /usr/local/bin/docker-compose
Verificando a versão do docker-compose
docker-compose --version
Se tudo ocorrer bem você verá o retorno da versão do Docker compose, como descrito abaixo
root@docker05:~# docker-compose --version
Docker Compose version v5.0.0
root@docker05:~#
Agora vamos subir o Docker Swarm
Com o Docker instalado e funcionando em todos os servidores, podemos iniciar a configuração do Docker Swarm, que será responsável por transformar nossos hosts em um cluster unificado. Antes de iniciar, é importante definir quais máquinas serão Managers e quais atuarão como Workers.
No nosso cenário do projeto temos 5 servidores, seguem eles abaixo e suas respectivas funções:
- Docker01 – Manager
- Docker02 – Manager
- Docker03 – Manager
- Docker04 – Worker
- Docker05 – Worker
docker swarm init
Após inicializar o Swarm, vamos ingressar os servidores no swarm, cada um com a sua respectiva função, ainda logado no servidor que inicializou o swarm, vamos executar dois comandos, um para ingressar os servidores como Worker e o outro para ingressar os servidores como manager.
Gerando o token para ingressar servidor como MANAGER
docker swarm join-token manager
IMPORTANTE
O comando acima deve ser executado apenas no servidor que será o Manager inicial do cluster. Somente um nó com função de Manager pode gerar o token de integração necessário para que outros servidores participem do Swarm.Após executar o comando acima será retornado no terminal o seguinte valor:
root@docker01:~# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-3tss3sweoei9i0kxllfakyf9hgff16cidgpcxomu3dcpha3fuu-5m55pf81mt1qrzojkl9qtkzjp 192.168.10.201:2377
Exato, agora que o token foi gerado no Manager principal, podemos adicionar o próximo servidor como novo Manager do cluster Swarm.
No servidor que será adicionado como manager, execute no terminal o comando fornecido pelo join token, gerado no comando acima:
docker swarm join --token SWMTKN-1-3tss3sweoei9i0kxllfakyf9hgff16cidgpcxomu3dcpha3fuu-5m55pf81mt1qrzojkl9qtkzjp 192.168.10.201:2377
Após ingressar os managers utilizando o comando acima, vamos vê os servidores que já estão no Swarm, utilizando o comando abaixo:
docker node ls
O comando retornará algo parecido com a informação abaixo:
root@docker01:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
l8w71f18npkpyh9o2zf8qq7qi * docker01 Ready Active Reachable 29.1.2
wgcs0701qylmmlsi2wii76dh0 docker02 Ready Active Leader 29.1.2
t0kkphlsxmnlfh9wk9aqxcnur docker03 Ready Active Reachable 29.1.2
recebemos uma lista com todos os servidores que fazem parte do cluster Swarm. Essa saída é essencial para monitorar o ambiente e entender como os nodes estão configurados. As informações apresentadas incluem:
ID – Identificação única de cada node dentro do cluster
HOSTNAME – Nome do servidor registrado no Swarm
STATUS – Situação atual do node (por exemplo: Ready, Down, etc.)
AVAILABILITY – Indica se o servidor está disponível para receber workloads (Active, Drain, etc.)
MANAGER STATUS – Mostra se o node é Worker, Manager ou, ainda, se ele é o Líder do cluster (Leader)
O ponto mais importante dessa saída é o campo MANAGER STATUS, pois é ele que identifica qual servidor está atuando como Líder (Leader).
O Leader é quem coordena o estado do cluster, mantém a sincronização dos nodes e toma as decisões internas do Swarm. Os demais managers aparecem como Reachable, indicando que podem assumir o controle caso o líder fique indisponível.
Gerando o token para ingressar servidor como WORKER
Ainda logado em algum servidor que tem a função de manager, vamos gerar o token para ingressar os servidores que vão atuar como workers
docker swarm join-token worker
Após executar o comando acima será gerado o token de acesso, parecido com o descrito abaixo:
root@docker02:~# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-3tss3sweoei9i0kxllfakyf9hgff16cidgpcxomu3dcpha3fuu-0tdit74irvf9t0xb9xlka3by3 192.168.10.202:2377
Token gerado vamos acessar os servidores que terão a função de workers e vamos executar no terminal o comando gerado acima para integração:
docker swarm join --token SWMTKN-1-3tss3sweoei9i0kxllfakyf9hgff16cidgpcxomu3dcpha3fuu-0tdit74irvf9t0xb9xlka3by3 192.168.10.202:2377
Após executar o comando de integração nos servidores que serão workers, podemos verificar o estado do cluster utilizando:
docker node ls
Esse comando lista todos os servidores que fazem parte do Swarm, exibindo informações como nome, status, disponibilidade e quem é o líder.
IMPORTANTE
Comandos relacionados à administração do cluster não podem ser executados em nodes do tipo worker, pois eles não possuem privilégios administrativos no Swarm. Apenas servidores com função de manager têm permissão para visualizar, gerenciar e executar comandos administrativos do cluster.
Portanto o comando docker node ls , funcionará somente em managers, e não será executado em workers.
Após executado o comando acima será retornado oseguinte valor no terminal:
root@docker02:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
l8w71f18npkpyh9o2zf8qq7qi docker01 Ready Active Reachable 29.1.2
wgcs0701qylmmlsi2wii76dh0 * docker02 Ready Active Leader 29.1.2
t0kkphlsxmnlfh9wk9aqxcnur docker03 Ready Active Reachable 29.1.2
kf98zk7znyiesu08k08r31tcw docker04 Ready Active 29.1.2
incoxqmp6a6kvn6lxjmpev6cb docker05 Ready Active 29.1.2
Pronto, o seu Docker Swarm está ativo e pronto para executar as suas aplicações.
Se esse material foi útil para você e te ajudou no processo, considere acompanhar o meu trabalho e ficar por dentro de novos conteúdos.
Minhas Redes:
Profissional de TI com mais de 10 anos de experiência em infraestrutura, Linux, virtualização e contêineres. Atua com Docker, Docker Swarm e implantação de soluções VoIP, sempre focado em otimizar ambientes e compartilhar conhecimento com a comunidade.



Me ajudou bastante
Que bom poder ajuda-lo
Maravilha de post!
Pingback: Instalando o Portainer com Docker Compose – Blog Nexus