1 pontos por chcv0313 2025-12-26 | 9 comentários | Compartilhar no WhatsApp

Existe um servidor usado em comum por dezenas de pessoas.

Cada um está servindo seu projeto em um contêiner,

mas quando ocorrem problemas como a reinicialização do servidor, fica difícil para o administrador lidar com esses contêineres.

Não sei se devo pedir que cada pessoa envie previamente o comando de execução do contêiner Docker para então executá-lo manualmente,
ou se devo organizar tudo com Docker Compose e entrar pasta por pasta de cada projeto para rodar compose up, entre outras possibilidades.

Gostaria de pedir conselhos sobre como, na posição de administrador, gerenciar vários contêineres.

9 comentários

 
chcv0313 2025-12-31

Agradeço a todos que responderam. Acho que a meta deste ano deve ser a adoção do Kubernetes.

 
popopo 2025-12-28

A forma mais simples é transformar os contêineres em daemons para que eles também iniciem quando o sistema operacional for iniciado.

  • Antes de reiniciar, também dá para encerrá-los normalmente um por um.

Se for da família EL (Enterprise Linux, termo geral para a linha RHEL), é possível registrar os contêineres como serviços do systemd. Pelo que chamam, isso se chama Quadlet.

 
bungker 2025-12-27

Só pela pergunta, parece que daria para resolver com depend on, restart always ou unless stoped, mas acho que deve haver alguma situação difícil que não foi incluída na pergunta. Ainda assim, se forem algumas dezenas de pessoas, no fim das contas parece que você vai ter que ir para o Kubernetes.

Você provavelmente conseguirá encontrar uma resposta mesmo perguntando à IA exatamente como está na pergunta.

 
tujuc 2025-12-27
  1. Onde você colocou a infraestrutura? AWS? Próprio ou hospedagem de servidor? Azure?
  2. Você gerencia isso sozinho?
  3. Em que estado você está trabalhando agora e até onde você conhece?

Se houver essas informações, acho que fica mais fácil conversar.

Respondendo simplesmente com base no que você mencionou...

Não entendo por que seria necessário um comando para executar contêineres. Peça para criarem um arquivo Compose e, com base nele, o melhor é estruturar tudo para que possa subir com o mesmo comando para todos (comando do Compose).

:) Como você é o administrador, se pedir para fazerem assim, as outras pessoas vão fazer, então siga firme :)

Eu não recomendo muito o k8s, porque considero que é uma solução com um peso grande para um ambiente gerenciado por uma pessoa só.
Sempre acho que o melhor é configurar a infraestrutura da forma mais simples possível.

 
chcv0313 2025-12-27

São 4 servidores on-premises.
Estou fazendo isso sozinho.
Depois de passar pela aprovação de segurança, faz agora 4 meses que o Docker foi adotado na empresa, e de k8s eu só conheço os conceitos. Em breve terei que implantar o HARBOR para Docker e, depois que o Harbor entrar, o Docker Hub será bloqueado. Provavelmente só eu vou ficar com acesso ao Docker Hub e, quando houver solicitação, apenas eu baixarei as imagens do Docker Hub e as enviarei para o Harbor interno da empresa.

Achei irrealista tocar tudo na base do comando Compose, entrando pasta por pasta de cada projeto para dar compose up manualmente, então não segui por esse caminho. Em vez disso, pedi para usarem comandos Docker com caminhos absolutos, mas ultimamente não consigo tirar da cabeça que isso também é uma abordagem errada.

 
byun1114 2025-12-27

Não basta definir a opção de reinicialização do Docker?

 
click 2025-12-26

Nesses casos, é melhor usar Kubernetes e atribuir um contexto para cada usuário.
Também é possível restringir as permissões para que cada usuário só possa usar aquele contexto.

 
cafedead 2025-12-26

Use o k8s.

 
selene 2025-12-29

Também penso de forma parecida com o tujuc; acredito que introduzir k8s sozinho, sem alguém experiente, e operá-lo de forma estável sem incidentes envolve um risco considerável.

Mas, como você disse que são 4 servidores sendo usados em comum por dezenas de pessoas, a situação fica um pouco ambígua. Ainda assim, em vez de tomar como critério a quantidade de pessoas envolvidas, se o número de programas de servidor for muito grande e a complexidade estiver alta, pode valer a pena considerar aprender k8s.

Se eu estivesse na mesma situação que o autor, provavelmente melhoraria o ambiente nas etapas abaixo.

  1. Tomar medidas para que não haja problema mesmo que os programas de servidor sejam desligados a qualquer momento => inclui coisas como implementar graceful shutdown e refatorar para funcionar de forma stateless. (Ou pedir isso aos engenheiros)
  2. Containerizar e padronizar os programas de servidor => criar um Dockerfile e um arquivo docker compose para cada serviço, de modo a garantir que eles sempre possam subir ao executar os mesmos comandos.
  3. Gerenciar de modo que outros engenheiros, exceto o administrador, não precisem acessar o servidor => é possível montar algo semelhante a GitOps usando a plataforma de CI/CD que você preferir, como Jenkins/GitHub Actions/AWS CodePipeline. Só de alcançar esse nível, os engenheiros já conseguem controlar bem reimplantações/reinicializações apenas reexecutando o pipeline.
  4. Depois, como outras pessoas mencionaram, avançar a arquitetura (adotando K8s, ArgoCD etc.)