A execução de contêineres dentro de uma máquina virtual?

15

Entendo que os contêineres são muito mais leves do que as VMs porque não virtualizam o hardware, mas apenas isolam o software executado neles a partir de software em execução 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. Eu preciso provisionar pelo menos 6 "servidores" para hospedar instâncias de aplicativos da Web relativamente pequenos (cada instância é para um cliente diferente). Seria um desperdício provisionar uma nova VM para cada um desses servidores, portanto, planejo configurar duas VMs e fazer o seguinte:

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

Considerando isso, existe uma sobrecarga não negligenciável associada a sistemas de contêineres que tornaria uma má idéia usá-los dentro de uma VM, ou existe alguma outra razão técnica por que eu não gostaria usar recipientes?

    
por Chris L 10.03.2015 / 23:11

2 respostas

13

O Docker é MUITO leve em comparação com uma VM, e um sistema VM deve funcionar apenas em contêineres corretos. Cada container essencialmente roda como um sistema isolado, então é muito bom para o isolamento de uma perspectiva de estabilidade do sistema. Com base na sua descrição, parece o caso de uso ideal do Docker. Se você experimentar o Docker, certifique-se de usar a versão mais nova possível, algumas das mais antigas têm algumas vulnerabilidades bastante desagradáveis. Existem algumas considerações de segurança ao executar o Docker.

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

Diretiva do usuário - Em cada Dockerfile, é recomendável usar a diretiva USER e fazer com que o usuário seja executado como uma conta diferente de root, o padrão. A captura aqui é o usuário deve existir no sistema. Ele também pode ser frustrante chowning / chmodding arquivos e diretórios para este novo usuário, mas ajuda a reduzir o risco. Eu normalmente recomendo que você crie um "containeruser" 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.

    
por 10.03.2015 / 23:43
3

is there a non-negligible overhead associated with container systems that would make it a bad idea to use them inside a VM

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

or is there any other technical reason why I would not want to use containers?

Eu não sei sobre o Docker em geral porque ainda não trabalhei com ele. Eu acho que o software de gerenciamento ainda não tem maturidade comparado ao software de gerenciamento de VM ... mas eu sou um administrador do vSphere e, portanto, provavelmente tendencioso.

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

    
por 11.03.2015 / 20:34