A princípio, vamos entender um container como um conjunto de processos que são isolados do resto do sistema. Esses processos são executados a partir de uma imagem distinta que fornece todos os arquivos necessários a eles. Por fornecer uma imagem que contém todas as dependências de um aplicativo, o container é portátil e consistente durante todas as etapas desde o desenvolvimento, teste e por fim, produção.

Qual a diferença entre o modelo tradicional de virtualização (VMs) e quando utilizamos Containers?

No modelo tradicional de virtualização (VMs) podemos perceber que cada nova aplicação rodando dentro de uma máquina física é replicada o ambiente como um todo, ou seja, dentro de cada máquina VM existe um sistema operacional e todo o sistema de arquivos base, isso consome muito recurso e poder de processamento.

Já no modelo de container perceba que os recursos são compartilhados entre os containers pelo seu hospedeiro, ou seja, os containers usa o próprio recurso operacional da máquina física e com isso aumenta a eficiência no uso dos mesmos. Os containers são isolados a nível disco, memória, processamento e rede.