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
- O agente consulta a fila de execuções do orquestrador.
- 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.
- Cria e inicia o container, repassando as variáveis de ambiente da execução.
- Captura a saída do container (
stdoutestderr) e a envia ao orquestrador como log da execução. - Ao final, remove o container e registra o resultado: código de saída
0indica 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.livepor 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
49252a49292liberadas 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
masterda 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:
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ável | Obrigatória | Descrição |
|---|---|---|
AGENT_NAME | Sim | Nome que identifica o Docker Host no portal. Aceita letras, números e hífen, é convertido para maiúsculas e limitado a 15 caracteres. |
AGENT_TOKEN | Sim | Token que autentica o agente no orquestrador. |
GRPC_SERVER_URL | Não | Endereç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:
| Volume | Função |
|---|---|
/var/run/docker.sock | Permite ao agente baixar imagens e criar, iniciar e remover containers no Docker do host. |
/proc, /sys, / e /etc/os-release | Montados 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 -dCom 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-hostEm 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 -dSe 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 downSolução de problemas
| Sintoma | Causa provável | O que fazer |
|---|---|---|
Log AGENT_TOKEN environment variable must be set | Token não informado. | Preencha AGENT_TOKEN no docker-compose.yml e recrie o container. |
Log AGENT_NAME environment variable must be set | Nome não informado. | Preencha AGENT_NAME e recrie o container. |
Log Could not send healthcheck e container reiniciando | Sem 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 imagem | Imagem 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 antiga | Tag reutilizada, com a imagem antiga em cache no host. | Publique com uma nova tag ou remova a imagem pela tela Docker Hosts. |