Saltar para o conteúdo
🎉 Bem-vindo! Sinfonia by 27Devs é uma plataforma completa de orquestração de robôs, solicite já seu acesso.

Docker

O Docker Host é a máquina que executa os bots do tipo Docker. Nela roda o agente de Docker Host: um container que se conecta ao orquestrador do Sinfonia, recebe as execuções da fila, baixa a imagem do bot e a executa como container no Docker da própria máquina.

Este agente é diferente dos agentes para Windows e Linux, usados pelos bots dos tipos Script, Zip e Git. Bots Docker só podem ser executados em um Docker Host. A comparação entre eles está na visão geral de Agentes.

Importante

A execução de bots Docker é um recurso premium, contratado à parte na plataforma. A aba Docker da criação de bots e a tela Docker Hosts só ficam disponíveis depois da contratação.

Como funciona

    flowchart LR
    O["Orquestrador<br/>Sinfonia"] <-->|HTTPS| A["Agente de<br/>Docker Host"]
    A -->|docker.sock| D["Docker Engine<br/>do host"]
    D --> C["Container<br/>do bot"]
    R[("Registry ou<br/>arquivo de imagem")] -->|imagem| D
  
  1. O agente consulta a fila de execuções do orquestrador.
  2. Ao receber uma execução, verifica se a imagem do bot já existe no host. Se não existir, obtém a imagem conforme a origem configurada no bot: pull em registry público, pull com autenticação ou carga do arquivo enviado.
  3. Cria e inicia o container, repassando as variáveis de ambiente da execução.
  4. Captura a saída do container (stdout e stderr) e a envia ao orquestrador como log da execução.
  5. Ao final, remove o container e registra o resultado: código de saída 0 indica sucesso, qualquer outro valor indica erro.

Requisitos

  • Máquina Linux com Docker Engine e o plugin Docker Compose instalados.
  • Recurso de Docker Host contratado na plataforma.
  • Acesso de saída ao orquestrador do Sinfonia em grpc.sinfonia.live por HTTPS (porta 443), como descrito nos pré-requisitos.
  • Acesso de saída aos registries de onde as imagens dos bots serão baixadas (Docker Hub, GHCR, Amazon ECR etc.).
  • Portas UDP 49252 a 49292 liberadas no firewall para o host, usadas na visualização dos logs dos containers em tempo real pelo portal.
  • Um token de agente. Use o token master da conta ou crie um novo em tokens.
  • CPU, memória e disco suficientes para o agente e para os containers dos bots que rodarão no host.

Atenção

O agente acessa o Docker do host pelo socket /var/run/docker.sock, o que equivale a controle total sobre o Docker da máquina. Use um host dedicado às automações e evite compartilhá-lo com outras cargas de trabalho.

Implantação

Baixe a imagem do agente

A imagem do agente de Docker Host fica disponível para download dentro da plataforma do Sinfonia. Baixe o arquivo e copie-o para o host.

Carregue a imagem no Docker

No host, carregue o arquivo baixado com o comando docker load:

docker load --input <arquivo-da-imagem>

Ao terminar, o comando exibe o nome e a tag da imagem carregada, no formato Loaded image: <nome>:<tag>. Anote esse valor para usar no próximo passo.

Crie o docker-compose.yml

Em uma pasta do host, por exemplo /opt/sinfonia-docker-host, crie o arquivo abaixo:

docker-compose.yml
services:
  sinfonia-docker-host:
    image: <nome>:<tag>
    container_name: sinfonia-docker-host
    restart: unless-stopped
    environment:
      AGENT_NAME: DOCKER-HOST-01
      AGENT_TOKEN: <seu-token>
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
      - /etc/os-release:/etc/os-release:ro
    ports:
      - 49252-49292:49252-49292/udp
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: "2000MB"

Ajuste as variáveis

Em image, informe o nome e a tag exibidos pelo docker load.

VariávelObrigatóriaDescrição
AGENT_NAMESimNome que identifica o Docker Host no portal. Aceita letras, números e hífen, é convertido para maiúsculas e limitado a 15 caracteres.
AGENT_TOKENSimToken que autentica o agente no orquestrador.
GRPC_SERVER_URLNãoEndereço do orquestrador. Por padrão, grpc.sinfonia.live.

Atenção

O AGENT_TOKEN é um segredo. Restrinja a leitura do docker-compose.yml ao usuário que administra o host e não versione o arquivo com o token preenchido.

Os volumes têm as seguintes funções:

VolumeFunção
/var/run/docker.sockPermite ao agente baixar imagens e criar, iniciar e remover containers no Docker do host.
/proc, /sys, / e /etc/os-releaseMontados somente para leitura, permitem ao agente reportar as informações e o uso de recursos do host.

O bloco deploy.resources.limits limita o consumo do próprio agente, e não o dos containers dos bots.

Inicie o agente

cd /opt/sinfonia-docker-host
docker compose up -d

Com restart: unless-stopped, o agente volta a subir sozinho quando o host ou o serviço do Docker reinicia.

Confirme a conexão

Verifique os logs do agente:

docker logs -f sinfonia-docker-host

Em seguida, acesse a tela Docker Hosts do portal. O host deve aparecer com o nome definido em AGENT_NAME. A partir daí ele pode ser selecionado no campo Docker Host ao criar um bot Docker.

Gerenciar imagens e containers

Na tela Docker Hosts do portal você acompanha cada host conectado, com as imagens armazenadas e os containers existentes, e pode:

  • consultar os logs de um container;
  • iniciar, pausar, reiniciar, parar, encerrar ou remover um container;
  • remover uma imagem do host.

Comportamento das execuções

  • Tempo de início: com a fila vazia, o agente consulta o orquestrador a cada 30 segundos. Uma execução pode levar até esse tempo para começar.
  • Cache de imagens: o agente só baixa a imagem quando ela ainda não existe no host. Se você publicar um conteúdo novo reutilizando a mesma tag (por exemplo latest), o host continua executando a imagem antiga.
  • Limpeza: o container é removido ao final de cada execução. A imagem permanece no host para as execuções seguintes.

Dica

Publique cada versão do bot com uma tag própria, como meu-bot:1.0.1. Para forçar um novo download de uma tag já existente, remova a imagem do host pela tela Docker Hosts.

Atualizar ou remover o agente

Para atualizar, baixe a nova versão da imagem na plataforma, carregue-a no host e recrie o container:

docker load --input <arquivo-da-imagem>
docker compose up -d

Se a tag da nova imagem for diferente, atualize o campo image do docker-compose.yml antes de recriar o container.

Para remover o agente do host:

docker compose down

Solução de problemas

SintomaCausa provávelO que fazer
Log AGENT_TOKEN environment variable must be setToken não informado.Preencha AGENT_TOKEN no docker-compose.yml e recrie o container.
Log AGENT_NAME environment variable must be setNome não informado.Preencha AGENT_NAME e recrie o container.
Log Could not send healthcheck e container reiniciandoSem acesso ao orquestrador ou token inválido.Verifique a liberação de rede para grpc.sinfonia.live (HTTPS, porta 443) e o token usado.
Execução com erro ao baixar a imagemImagem inexistente, credenciais inválidas ou registry inacessível a partir do host.Confira o caminho da imagem, as variáveis de credencial e o acesso de rede ao registry.
Bot executa uma versão antigaTag reutilizada, com a imagem antiga em cache no host.Publique com uma nova tag ou remova a imagem pela tela Docker Hosts.

Próximo passo

Última modificação em