Quais são as diferenças práticas (não técnicas) entre o interior de um contêiner do Docker debian e uma VM debian?

2

Eu sei que os contêineres do docker não executam seu próprio kernel, mas compartilham um com o host, ao contrário de uma VM que executa seu próprio kernel, mas quais são as diferenças práticas entre uma imagem do docker debian e um vm com debian instalado?

Existe alguma coisa que pode ser feita dentro de um, mas não do outro, ou eles são funcionalmente os mesmos, então qualquer coisa que seja executada em uma instalação real do Debian funcionará tão bem dentro de um contêiner do Debian Docker?

O sistema operacional host também muda as coisas? Se eu executar um contêiner do Debian em um sistema CentOS, ele funcionará de maneira diferente para um contêiner do Debian em um sistema Debian?

    
por Qwertie 19.04.2018 / 11:50

1 resposta

3

As principais diferenças práticas entre o contêiner do Docker e a VM:

  1. A imagem Docker é apenas uma imagem de base do sistema original ( debootstap ajuda a obter essa imagem base) e de causa pode (ou não) conter kernel, initrd ... Mas o kernel, initrd ... não fazem sentido em vez de pesquisar, desenvolver, outras dependências de pacotes. Então, se não for necessário, eles podem ser removidos com segurança.

  2. Os contêineres do Docker são iniciados em diferentes espaço de nomes que ocultam processos reais do sistema, conexões de rede ... do impacto do contêiner. Em suma, não é possível processar o processo real do sistema kill do contêiner Docker, mas você pode ver o processo do contêiner Docker como processo comum do sistema real e fazer qualquer coisa com ele. VM organizada mais difícil em vez do conceito namespace : todas as VMs são iniciadas como aplicativos enormes que são controlados pelo software da VM (VirtualBox, VMware ...). O software da VM captura todas as chamadas do sistema desse aplicativo e as transmite para o hardware real. Portanto, eles são mais lentos do que o conceito de container.

  3. Os contêineres do Docker fornecem o ambiente suporte necessário para executar algum aplicativo (versões de bibliotecas específicas, componentes de software ...), mas não o kernel. Portanto, se seu aplicativo usa novos recursos do kernel, eles não serão trabalhados.

  4. Os contêineres do Docker geralmente não contêm imagem completa do sistema, porque o principal destino do conceito do Docker é o compartilhamento de aplicativos. O principal alvo da VM é compartilhar sistemas operacionais.

Não há diferença sobre o sistema real que inicia uma imagem específica do Docker (exceto casos em que seu aplicativo depende de um kernel específico).

    
por 19.04.2018 / 12:57