Executando contêineres dentro de uma máquina virtual?

15

Entendo que os contêineres são muito mais leves que as VMs, porque não virtualizam o hardware, mas apenas isolam o software em execução neles do software em outros contêineres no sistema.

Minha situação é tal que não posso comprar servidores adicionais, e os servidores que tenho estão todos executando hipervisores. Preciso provisionar pelo menos 6 "servidores" para hospedar instâncias de aplicativos Web relativamente pequenos (cada instância é para um cliente diferente). Seria um desperdício provisionar uma nova VM para cada um desses servidores, por isso planejo configurar 2 VMs e siga um destes procedimentos:

  1. Execute várias instâncias do aplicativo em cada VM usando hosts virtuais (apache). ou
  2. Configure contêineres nas VMs, o que me permitirá isolar os ambientes.

Considerando isso, existe uma sobrecarga não negligenciável associada aos sistemas de contêineres que tornaria uma má idéia usá-los dentro de uma VM ou há algum outro motivo técnico pelo qual eu não gostaria de usar contêineres?

Chris L
fonte

Respostas:

13

O Docker é MUITO leve em comparação com uma VM e um sistema de VM deve funcionar com perfeição na execução de contêineres. Cada contêiner é executado essencialmente como um sistema isolado, portanto, é muito bom isolá-lo da perspectiva de estabilidade do sistema. Com base na sua descrição, parece o caso de uso ideal para o Docker. Se você experimenta o Docker, certifique-se de usar a versão mais recente possível, algumas das mais antigas possuem algumas vulnerabilidades bastante desagradáveis. Existem algumas considerações de segurança ao executar o Docker.

SELinux - O SELinux reconhece o contêiner e cria automaticamente um rótulo MCS nomeado aleatoriamente para cada contêiner. Isso ajuda a garantir o isolamento, já que os contêineres LXC não são realmente "contidos" por si mesmos, embora isso esteja melhorando.

Diretiva USER - Em cada Dockerfile, é recomendável usar a diretiva USER e fazer com que o usuário seja executado como uma conta diferente da raiz, o padrão. O problema aqui é que o usuário deve existir no sistema. Também pode ser frustrante chowning / chmodding arquivos e diretórios para esse novo usuário, mas ajuda a reduzir seu risco. Normalmente, recomendo que você crie um "usuário do contêiner" ou algo parecido em seus sistemas para ajudar a garantir que um usuário comum esteja disponível em todos os sistemas que não se sobreponham a nenhuma outra parte do sistema.

Caso contrário, a parte mais difícil é gerenciar os contêineres e atualizá-los quando necessário.

theterribletrivium
fonte
3

existe uma sobrecarga não negligenciável associada aos sistemas de contêineres que tornaria uma má idéia usá-los dentro de uma VM

O desempenho dos contêineres do Docker no VMware vSphere ajuda você?

ou existe algum outro motivo técnico pelo qual eu não gostaria de usar contêineres?

Não conheço o Docker em geral porque ainda não trabalhei com ele. Eu acho que o software de gerenciamento ainda carece de maturidade em comparação com o software de gerenciamento de VM ... mas eu sou um administrador do vSphere e, portanto, provavelmente tendencioso.

Considerando o Docker nas VMs, o CoreOS agora é oficialmente suportado no vSphere 5.5 . Portanto, pelo menos a VMware acha que o Docker / contêineres nas VMs está OK.

Mario Lenz
fonte