Skip to main content

deploy.mode no Docker Swarm | Swarm | Docker

  • deploy.mode no Docker Swarm | Swarm | Docker

Visão geral

A propriedade deploy.mode define como um serviço será executado e distribuído no cluster Docker Swarm.

Ela controla:

  • Quantidade de containers
  • Distribuição entre nodes
  • Estratégia de escalabilidade

Sintaxe

deploy:
mode: replicated

Valores disponíveis

O deploy.mode possui dois valores:

  • replicated
  • global

mode: replicated

deploy:
mode: replicated
replicas: 3

Comportamento

  • Executa uma quantidade fixa de containers
  • O Swarm decide onde colocar cada instância
  • Pode haver múltiplos containers no mesmo node

Exemplo prático

Cluster com 3 nodes:

node1
node2
node3

Configuração:

replicas: 3

Possível distribuição:

node1 → 2 containers
node2 → 1 container
node3 → 0 containers

Características

  • Controle explícito de escala
  • Distribuição não garantida
  • Pode causar concentração de carga em um node

Quando usar

  • Quando precisa de número fixo de instâncias
  • Quando quer escalar baseado em carga
  • Quando múltiplas instâncias por node são aceitáveis

Riscos

  • Conflito de porta (com mode: host)
  • Distribuição desigual
  • Maior necessidade de controle manual

mode: global

deploy:
mode: global

Comportamento

  • Executa 1 container por node elegível
  • Não utiliza replicas
  • Distribuição automática e previsível

Exemplo prático

Cluster com 3 nodes:

node1
node2
node3

Resultado:

node1 → 1 container
node2 → 1 container
node3 → 1 container

Escalabilidade automática

Adicionando um node:

node4

Resultado:

node4 → 1 container automaticamente

Características

  • Distribuição uniforme
  • Sem duplicação por node
  • Escala baseada em quantidade de nodes

Quando usar

  • APIs stateless
  • Serviços expostos com mode: host
  • Sidecars por node
  • Integração com API Gateway externo

Vantagem crítica

Evita conflito de porta:

ports:
- published: 5000
mode: host

Com global:

1 container por node → sem conflito

Comparação direta

Característicareplicatedglobal
Controle de quantidademanualautomático
Containers por node0..N1
Distribuição previsívelnãosim
Escala com novos nodesnãosim
Risco de conflito de portaaltobaixo

Integração com placement

Ambos suportam constraints:

deploy:
mode: global
placement:
constraints:
- node.labels.role == api

ou

deploy:
mode: replicated
replicas: 3
placement:
constraints:
- node.labels.role == api

Interação com portas

Com replicated + host

replicas: 3
published: 5000
mode: host

Risco:

node1:
- container A → 5000
- container B → 5000

Resultado:

  • erro de bind

Com global + host

mode: global
published: 5000
mode: host

Resultado:

1 container por node

Sem conflito.


Exemplo completo (replicated)

version: "3.9"

services:
api:
image: minha-api
ports:
- target: 8080
published: 5000
mode: ingress
deploy:
mode: replicated
replicas: 3

Exemplo completo (global)

version: "3.9"

services:
api:
image: minha-api
ports:
- target: 8080
published: 5000
mode: host
deploy:
mode: global
placement:
constraints:
- node.labels.role == api

Fluxo conceitual

replicated

N containers distribuídos dinamicamente

Swarm decide localização

menos previsibilidade

global

1 container por node

distribuição fixa

alta previsibilidade

Implicações técnicas

  • replicated → controle fino de escala

  • global → controle de distribuição

  • escolha impacta diretamente:

    • rede
    • portas
    • balanceamento
    • consumo de recursos