Ambos os formulários permitem que vários sistemas operacionais sejam executados em uma única máquina física.
Com contêineres, esses sistemas operacionais são isolados (eles têm seus próprios sistemas de arquivos, processos, bibliotecas, incluindo o libc
, endereço IP, etc.), mas eles ainda compartilham o mesmo kernel. Essa é a razão pela qual uname -a
mostrou sua versão do kernel do host.
Com a virtualização tradicional, os sistemas operacionais têm cada um seu próprio kernel em execução. Esses múltiplos kernels não estão sendo executados em cima do hardware real, mas em cima de um hardware virtualizado fornecido por um software chamado hipervisor. Essa é uma camada extra em comparação com a virtualização baseada em contêiner.
Cada tipo de virtualização tem seus pontos strongs e fracos. Os contêineres são mais limitados na escolha de sistemas operacionais, o container deve ser suportado pelo kernel em execução (por exemplo: Solaris zones on Solaris , LXC no Linux , WPAR no AIX ) embora tecnicamente, nada proíbe os desenvolvedores de kernel de implementar o suporte para userlands" alheios "(por exemplo: lxbrand = Zonas do Linux no Solaris 10 e SmartOS ou, mais recentemente, tempo de execução do Ubuntu no Windows 10 ) enquanto com hipervisores, o sistema operacional precisa apenas ser suportado pelo hardware virtual, o que permite muitas configurações heterogêneas (por exemplo, Linux kernels de 32 e 64 bits, * BSDs , Solaris, Windows, Mac OS X, ...)
A principal vantagem dos contêineres é que eles são muito mais leves, o desempenho do aplicativo é essencialmente o mesmo que seria com uma instalação de SO de metal puro. A instanciação de novos contêineres é muito mais rápida porque não há um kernel extra para inicializar, e a densidade do ambiente virtual pode ser muito maior porque não há kernels extras para serem executados.
Observe que Docker não é uma implementação de contêiner. O Docker é um padrão de construção / embalagem / distribuição para aplicativos executados em contêineres e inclui um engine para executá-los e recentemente adicionou um orquestrador também. Esse mecanismo desempenha um papel semelhante ao de um hipervisor, mas para aplicativos em contêineres.