Infraestrutura, nuvem e DevOps · Misto

Containers: o que trazem e quando são desnecessários

Em uma linha: Um container empacota o app com tudo que ele precisa para rodar, de modo que se comporta igual em qualquer lugar.

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.