Como criar um Docker Swarm
Out 28, 2026
/
By Faradilla A.
/
9 min Ler
O Docker Swarm é uma ferramenta de orquestração de contêineres que permite gerenciar várias instâncias do Docker Engine como um único sistema. Com ele, é possível implantar e gerenciar aplicações em contêineres distribuídos entre diferentes máquinas. Dessa forma, a aplicação continua funcionando mesmo que uma delas apresente falhas ou fique offline.
Neste artigo, você vai aprender a configurar um Docker Swarm e implantar serviços em várias instâncias de servidor virtual privado (VPS). Ao final, saberá como criar e gerenciar um cluster escalável e de alta disponibilidade usando o Docker Swarm.
Pré-requisitos
Antes de criar um Docker Swarm, configure pelo menos duas máquinas: uma para atuar como nó gerenciador e outra como nó de trabalho. Você pode usar computadores pessoais, máquinas virtuais, instâncias VPS ou outros ambientes compatíveis.
Neste tutorial, vamos usar três instâncias de VPS do serviço de hospedagem Docker da Hostinger: uma como nó gerenciador e as outras duas como nós de trabalho.
O Docker precisa de pelo menos 4 GB de RAM para funcionar sem problemas. Por isso, nosso plano KVM 1, disponível a partir de 5,49€/mês, deve ser suficiente. Ele oferece um núcleo de CPU, 4 GB de RAM e 50 GB de armazenamento NVMe.
Se precisar de mais poder de processamento ou espaço de armazenamento, você pode mudar para um plano superior a qualquer momento. Outra vantagem da hospedagem Docker da Hostinger é que o Docker e todos os seus componentes essenciais já vêm pré-instalados, dispensando a configuração manual.

Depois de contratar as instâncias VPS, recomendamos alterar o nome de host de cada uma de acordo com sua função no swarm. Essa etapa é opcional, mas facilita a leitura das informações e a identificação de cada nó.
Para alterar o nome de host do VPS na Hostinger, acesse Painel da Hostinger → VPS → Gerenciar → Visão geral → Detalhes do VPS. Em seguida, clique no ícone de lápis ao lado do nome de host atual e renomeie as instâncias da seguinte forma:
- Nó gerenciador: manager.vps
- Nó de trabalho 1: worker1.vps
- Nó de trabalho 2: worker2.vps

Se você já configurou o Uncomplicated Firewall (UFW) no VPS, libere as seguintes portas para permitir a comunicação entre os nós do swarm:
- 2377 TCP: para gerenciamento do cluster e comunicação entre os nós.
- 7946 TCP/UDP: para comunicação entre os nós do swarm.
- 4789 UDP: para o tráfego da rede overlay entre contêineres em nós diferentes.
Se ainda não configurou o UFW ou acabou de contratar o VPS, pule esta etapa.
Para liberar as portas necessárias, abra o terminal de cada instância e execute os comandos:
sudo ufw allow 2377/tcp sudo ufw allow 7946/tcp sudo ufw allow 7946/udp sudo ufw allow 4789/udp
Depois, execute o comando abaixo para verificar se o UFW está ativo e se as regras foram aplicadas:
sudo ufw status
Também é útil conhecer os comandos básicos da interface de linha de comando (CLI) do Docker, pois você vai usá-los para gerenciar os serviços no swarm. Confira nossa folha de dicas do Docker, que reúne os comandos mais usados para diferentes tarefas.
Como criar um swarm no Docker
Para criar um Docker Swarm, primeiro é necessário inicializar uma máquina como nó gerenciador e conectar as demais como nós de trabalho. Depois, você poderá implantar serviços no cluster e usar os comandos da CLI do Docker para executar tarefas como escalar serviços e aplicar atualizações graduais.
Siga as etapas abaixo para criar um Docker Swarm e gerenciar serviços em várias instâncias.
Como o procedimento envolve nós gerenciadores e nós de trabalho, preste atenção em qual máquina cada etapa deve ser executada. Algumas operações são realizadas apenas no nó gerenciador, enquanto outras devem ser executadas nos nós de trabalho.
1. Instale o Docker em todas as instâncias
Execute em: todos os nós.
Como mencionado nos pré-requisitos, o Docker já vem pré-instalado nos planos de hospedagem Docker da Hostinger. Caso utilize outro ambiente, será necessário instalar o Docker em todos os nós antes de configurar o swarm.
Após a instalação, confirme se o Docker está instalado corretamente:
docker --version
A saída deve ser semelhante a esta:

Em seguida, verifique se o serviço do Docker está em execução:
sudo systemctl status docker
O status deve aparecer como active (running), indicando que o daemon do Docker está funcionando corretamente.

Para sair da tela de status, pressione Ctrl + C.
2. Inicialize o nó gerenciador do swarm
Execute em: nó gerenciador.
Depois de instalar o Docker em todos os nós, acesse o nó gerenciador, onde você vai criar o Docker Swarm. Primeiro, identifique o endereço IP dessa máquina.
Se você utiliza um VPS da Hostinger, encontrará o endereço IP na seção Detalhes do VPS, na página Visão geral, onde também é possível alterar o nome de host, como mostramos anteriormente.
Com o endereço IP em mãos, execute o comando abaixo para inicializar o swarm. Substitua [IP do nó gerenciador] pelo endereço IP real do seu VPS:
docker swarm init --advertise-addr [IP do nó gerenciador]
O comando retornará uma saída semelhante a esta:

Copie e salve o comando de conexão, pois você vai precisar dele para adicionar os nós de trabalho ao swarm.
Para confirmar que o swarm foi inicializado corretamente, execute:
docker info
O comando exibirá informações sobre o estado do swarm.

Depois, consulte a lista de nós do cluster:
docker node ls
Você verá informações como ID do nó, nome de host, status, disponibilidade e função.

Dica
Se precisar adicionar novos nós e não tiver mais o token de conexão, execute o comando abaixo no nó gerenciador para exibi-lo novamente:
docker swarm join-token worker
3. Adicione os nós de trabalho
Execute em: nós worker1 e worker2.
Agora, acesse o nó worker1 e execute o comando de conexão que você copiou do nó gerenciador:
docker swarm join --token [token de conexão] [IP do nó gerenciador]:2377
Se aparecer a mensagem “This node joined a swarm as a worker”, significa que o nó foi adicionado ao swarm corretamente.

Repita o procedimento no nó worker2 e em qualquer outro nó que queira adicionar ao cluster.
Dica
Sempre que adicionar um novo nó, volte ao nó gerenciador e execute docker node ls para confirmar que ele entrou no swarm.
4. Implante seu primeiro serviço
Execute em: nó gerenciador.
Volte ao nó gerenciador para implantar um serviço de teste chamado hello-world. Embora seja apenas um teste e você vá remover o serviço na próxima etapa, esse exercício ajuda a entender como funciona o gerenciamento de serviços no Docker Swarm.
Para criar o serviço hello-world, execute:
docker service create --replicas 1 --name hello-world alpine ping docker.com
- docker service create: inicia a criação do serviço no Docker Swarm.
- –replicas 1: define o número de réplicas do serviço. Neste caso, será executada apenas 1 réplica.
- –name hello-world: define o nome do serviço como hello-world.
- alpine ping docker.com: usa a imagem alpine para executar um ping em docker.com como teste simples.

Depois, liste os serviços em execução no swarm:
docker service ls

5. Inspecione e escale os serviços
Execute em: nó gerenciador.
Agora que o serviço de teste está em execução, vamos inspecioná-lo e aumentar o número de réplicas no swarm.
Confira os detalhes do serviço
Para consultar os detalhes do serviço hello-world, execute:
docker service inspect --pretty hello-world
O comando exibirá informações detalhadas sobre o serviço, incluindo ID, réplicas e outras configurações. A flag –pretty formata a saída para facilitar a leitura.

Veja em quais nós o serviço está em execução
Para verificar em quais nós o serviço está sendo executado, use:
docker service ps hello-world
O comando lista todas as tarefas associadas ao serviço hello-world e mostra em quais nós elas estão em execução.

Escale o serviço
Para escalar um serviço, basta alterar o número de réplicas. Por exemplo, para aumentar o número de réplicas do hello-world para três, execute:
docker service scale hello-world=3
O Docker Swarm criará réplicas adicionais do serviço nos nós disponíveis.

Confira a distribuição das tarefas após o escalonamento
Depois de escalar o serviço, verifique como as tarefas estão distribuídas entre os nós:
docker service ps hello-world
Agora, você deverá ver as tarefas distribuídas entre os três nós, em vez de concentradas em apenas um, como no resultado anterior do mesmo comando.

Remova o serviço
Após inspecionar e escalar o serviço, remova-o do swarm com o comando:
docker service rm hello-world
Esse comando exclui o serviço hello-world do swarm com segurança.

Confirme a remoção do serviço
Para verificar se o serviço foi removido, execute:
docker service ls
Se a remoção do hello-world tiver sido concluída corretamente, ele não aparecerá mais na lista.
6. Aplique atualizações graduais aos serviços
Execute em: nó gerenciador.
As atualizações graduais, também conhecidas como rolling updates, permitem atualizar os serviços gradualmente, ajudando a evitar períodos de indisponibilidade. O Docker Swarm atualiza uma réplica por vez e passa para a próxima após concluir a atualização anterior.
Primeiro, vamos implantar um serviço usando a versão 7.4.0 da imagem Docker do Redis. Depois, vamos atualizá-lo para a versão 7.4.1 usando esse método.
Implante um serviço Redis
Comece criando um serviço com uma versão mais antiga da imagem Docker do Redis para atualizá-la posteriormente:
docker service create --name redis --replicas 3 redis:7.4.0

Atualize o serviço
Para atualizar o serviço, execute o comando abaixo, especificando uma versão mais recente da imagem do Redis:
docker service update --image redis:7.4.1 redis
O Docker Swarm substituirá gradualmente os contêineres antigos pelos atualizados, ajudando a manter a disponibilidade do serviço durante o processo.
Confira se a versão foi atualizada
Para verificar a versão do serviço e confirmar que a nova imagem está sendo utilizada, execute:
docker service inspect --pretty redis

Verifique em quais nós o serviço está em execução
Para acompanhar a atualização gradual e verificar quais contêineres continuam em execução e quais estão sendo substituídos, use:
docker service ps redis
O comando exibirá uma lista das tarefas do serviço. As tarefas dos contêineres atualizados aparecerão com o estado desejado Running, enquanto as dos contêineres antigos aparecerão como Shutdown.

7. Bloqueie o swarm
Execute em: nó gerenciador.
Ao ativar o bloqueio automático do swarm, você passa a precisar de uma chave para desbloquear o nó gerenciador após a reinicialização do Docker. Esse recurso protege as chaves de criptografia do swarm e ajuda a impedir o acesso não autorizado a informações confidenciais do cluster.
Não é necessário desbloquear o swarm apenas para adicionar um novo nó.
Ative o bloqueio automático do swarm
É possível ativar o bloqueio automático durante a inicialização do swarm usando a flag –autolock, como neste exemplo:
docker swarm init --autolock --advertise-addr [IP do nó gerenciador]
Como não ativamos esse recurso na inicialização, ainda podemos habilitá-lo no swarm existente com o comando:
docker swarm update --autolock=true
Com isso, o nó gerenciador será bloqueado automaticamente sempre que o serviço do Docker for reiniciado. O comando também gera uma chave para desbloqueá-lo. Guarde essa chave em um local seguro.

Para desativar o bloqueio automático, basta alterar o valor da flag –autolock de true para false.
Recupere a chave de desbloqueio
Se você não salvou a chave ao ativar o bloqueio automático, pode recuperá-la executando:
docker swarm unlock-key
Desbloqueie o swarm
Se o bloqueio automático estiver ativado, será necessário desbloquear o swarm após reiniciar o serviço do Docker no nó gerenciador ou realizar uma manutenção que envolva essa reinicialização. Para isso, execute:
docker swarm unlock
O sistema solicitará a chave de desbloqueio que você salvou anteriormente.
Dica
Para proteger dados confidenciais, utilize os segredos de build do Docker. Embora esse recurso não proteja diretamente o swarm, ele ajuda a manter credenciais e informações sensíveis protegidas durante a criação das imagens e a execução dos contêineres.
8. Gerencie e faça a manutenção dos nós
Execute em: nó gerenciador.
Gerenciar um swarm exige verificar regularmente a disponibilidade e a função de cada nó. Isso ajuda a manter o cluster funcionando corretamente e a evitar interrupções.
Inspecione um nó específico
Para consultar as informações de um nó, execute o comando abaixo, substituindo [nome do nó] pelo nome correspondente:
docker node inspect [nome do nó]
O comando exibirá o status atual, a disponibilidade e as funções do nó no swarm.

Drene um nó
Ao drenar um nó, você impede que ele receba novas tarefas, permitindo realizar a manutenção com segurança e sem interromper o funcionamento do swarm:
docker node update --availability drain [nome do nó]
Esse comando impede que novas tarefas sejam atribuídas ao nó e encerra as tarefas existentes, que são recriadas em outros nós disponíveis.
Pause um nó
Pausar um nó impede que novas tarefas sejam agendadas nele, mas permite que as tarefas existentes continuem em execução. Para isso, use:
docker node update --availability pause [nome do nó]
Essa opção é útil quando você precisa interromper temporariamente a atribuição de novas tarefas a um nó sem afetar as operações em andamento.

Restaure um nó drenado ou pausado
Após concluir a manutenção, restaure o funcionamento normal do nó alterando sua disponibilidade de drain ou pause para active:
docker node update --availability active [nome do nó]
Promova um nó a gerenciador
Para permitir que um nó gerencie o swarm, promova-o à função de gerenciador com este comando:
docker node promote [nome do nó]

Rebaixe um nó gerenciador a nó de trabalho
Em alguns casos, pode ser necessário rebaixar um nó gerenciador à função de nó de trabalho, seja por uma reorganização do cluster ou para realizar manutenção. Nesse caso, execute:
docker node demote [nome do nó]

Dica
Em vez de gerenciar cada nó separadamente, você pode alterar a função de vários nós com um único comando. Por exemplo, para promover os nós worker1 e worker2 à função de gerenciadores, execute:
docker node promote worker1 worker2
9. Remova os nós e exclua o swarm
Execute em: nós worker1, worker2 e manager.
Por fim, você pode remover nós do swarm e até excluir o cluster inteiro, se necessário.
Remova um nó de trabalho do swarm
No nó worker1, execute o comando abaixo para que ele saia do swarm com segurança:
docker swarm leave

Repita o procedimento nos demais nós que deseja remover do swarm.
Exclua os nós que saíram do swarm
Depois que um nó de trabalho sair do swarm, acesse o nó gerenciador e remova-o da lista de nós:
docker node rm [nome do nó]
Com isso, o nó deixa de fazer parte da lista de nós do Docker Swarm. Você também pode remover vários nós de uma só vez, informando seus nomes no mesmo comando:
docker node rm [nome do nó 1] [nome do nó 2]

Exclua o swarm
Não existe um comando específico para excluir completamente um swarm. No entanto, você pode desativá-lo fazendo com que o último nó gerenciador saia do cluster:
docker swarm leave --force
Antes de executar o comando, confirme que esse é o último nó do swarm. Se ainda houver outros nós gerenciadores, o cluster continuará existindo.
Conclusão
O Docker Swarm facilita a implantação, o escalonamento e a atualização de aplicações em contêineres distribuídos por várias máquinas, além de ajudar a manter a infraestrutura disponível e resiliente.
Neste tutorial, mostramos como criar e gerenciar um Docker Swarm do zero:
- Prepare as instâncias VPS e instale o Docker em cada uma delas.
- Inicialize o nó gerenciador do swarm.
- Adicione os nós de trabalho ao cluster.
- Implante um serviço de teste para conhecer os recursos de gerenciamento de serviços.
- Inspecione e escale o serviço para entender a distribuição das tarefas.
- Aplique atualizações graduais para ajudar a evitar períodos de indisponibilidade.
- Bloqueie o swarm para aumentar a segurança.
- Gerencie e faça a manutenção dos nós.
- Remova os nós e exclua o swarm.
Como próximo passo, experimente implantar uma aplicação real no seu swarm, configurar o NGINX como proxy reverso para gerenciar o tráfego ou explorar as stacks do Docker para criar uma infraestrutura mais escalável e fácil de manter.
Perguntas frequentes (FAQ) sobre como criar um Docker Swarm
u003cstrongu003eO que é o Docker Swarm?u003c/strongu003e
O Docker Swarm é uma ferramenta nativa de clusterização e orquestração que permite gerenciar várias instâncias do Docker Engine como um único sistema virtual. Com ele, é possível implantar, escalar e manter aplicações em contêineres com alta disponibilidade e balanceamento de carga integrado entre vários nós.
u003cstrongu003eComo adicionar nós a um Docker Swarm?u003c/strongu003e
Para adicionar um nó, primeiro gere um token de conexão no nó gerenciador usando o comando u003cstrongu003edocker swarm join-token workeru003c/strongu003e. Depois, execute o comando de conexão no novo nó para integrá-lo ao swarm. O nó será adicionado automaticamente ao cluster.
u003cstrongu003ePosso criar um Docker Swarm com vários hosts?u003c/strongu003e
Sim. O Docker Swarm foi desenvolvido para ambientes com vários hosts. Você pode criar um swarm usando máquinas de diferentes hosts ou provedores de nuvem. Depois de conectadas, essas máquinas funcionam como um único cluster, permitindo executar serviços em vários hosts com distribuição integrada de serviços.
Todo o conteúdo dos tutoriais deste site segue os rigorosos padrões editoriais e valores da Hostinger.
Comentários
0 responses