Containers: o que trazem e quando são desnecessários
Que problema resolve
Fazer coincidir versões e dependências entre máquinas. Em vez de instalar e configurar em cada servidor, você constrói uma imagem e a executa em qualquer lugar. Daí também a facilidade de escalar: executar outra instância é questão de segundos.
Como construir uma boa imagem
Uma base leve e atualizada, um build multi-estágio para que ferramentas de build não cheguem à imagem final, um usuário sem permissões completas e uma tag de versão explícita — não só 'latest'.
Não coloque segredos na imagem. Eles são injetados em tempo de execução.
Quando não é preciso
Um site estático, uma função pequena ou um sistema rodando numa plataforma gerenciada que lida com isso. Containers adicionam uma camada para manter; se você não ganha portabilidade ou uniformidade deles, dispense.
Indo mais fundo
Escaneie imagens por vulnerabilidades no processo de build, e reconstrua em um ciclo regular mesmo sem mudança de código — a maioria das vulnerabilidades vem da camada base. E defina uma política clara de tags para sempre saber qual versão exata está rodando.