AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 788953
Accepted
Thiago Rider Augusto
Thiago Rider Augusto
Asked: 2016-07-10 14:52:30 +0800 CST2016-07-10 14:52:30 +0800 CST 2016-07-10 14:52:30 +0800 CST

Qual é a diferença entre contêineres e máquinas virtuais?

  • 772

Quero compreender tudo o que difere um container de uma máquina virtual. Um sistema de arquivos com todos os sistemas operacionais pode ser observado para ambos os métodos de virtualização. Mas em um contêiner do Docker, por exemplo, centos 5.x, se eu executar uname -ano shell do contêiner, a saída mostrará a versão do kernel do meu host. Como funciona e as principais diferenças de uma máquina virtual clássica (vmware, virtualbox, xen, etc)?

virtualization virtual-machines docker containers lxc
  • 2 2 respostas
  • 3694 Views

2 respostas

  • Voted
  1. Best Answer
    jlliagre
    2016-07-10T15:27:13+08:002016-07-10T15:27:13+08:00

    Ambas as formas 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 compartilham o mesmo kernel. Essa é a razão pela qual uname -amostrou 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 vários kernels não estão sendo executados sobre o hardware real, mas sobre um hardware virtualizado fornecido por um software chamado hypervisor. Esta é uma camada extra em comparação com a virtualização baseada em contêiner.

    Cada tipo de virtualização tem seus pontos fortes e fracos. Os contêineres são mais limitados na escolha dos sistemas operacionais, o contêiner deve ser suportado pelo kernel em execução (por exemplo: zonas Solaris no Solaris , LXC no Linux , WPAR no AIX ) embora tecnicamente, nada proíba os desenvolvedores do kernel de implementar o suporte para " alien" userlands (por exemplo: lxbrand = zonas 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 configurações muito heterogêneas (por exemplo: Kernels Linux de 32 bits 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 verdadeira instalação de sistema operacional bare metal. A nova instanciação de contêiner é muito mais rápida porque não há kernel extra para inicializar, e a densidade do ambiente virtual pode ser muito maior porque não há kernels extras para executar.

    Observe que o 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 mecanismo para executá-los e recentemente adicionou um orquestrador também. Este motor desempenha um papel semelhante ao de um hipervisor, mas para aplicações em contêineres.

    • 12
  2. gxx
    2016-07-10T15:27:02+08:002016-07-10T15:27:02+08:00

    Um bom ponto de partida seria ler o artigo da Wikipédia :

    A virtualização no nível do sistema operacional é um método de virtualização de servidor no qual o kernel de um sistema operacional permite a existência de várias instâncias isoladas do espaço do usuário , em vez de apenas uma. Essas instâncias, que às vezes são chamadas de contêineres, contêineres de software, mecanismos de virtualização (VEs) ou prisões ( FreeBSD jail ou chroot jail ), podem parecer um servidor real do ponto de vista de seus proprietários e usuários.

    Em sistemas operacionais do tipo Unix, essa tecnologia pode ser vista como uma implementação avançada do mecanismo chroot padrão. Além dos mecanismos de isolamento, o kernel geralmente fornece recursos de gerenciamento de recursos para limitar o impacto das atividades de um contêiner em outros contêineres. [...]


    Quero compreender tudo o que difere um container de uma máquina virtual.

    Com a tecnologia de virtualização, o pacote que pode ser transmitido é uma máquina virtual e inclui um sistema operacional completo, bem como o aplicativo. Um servidor físico rodando três máquinas virtuais teria um hipervisor e três sistemas operacionais separados rodando sobre ele.

    Por outro lado, um servidor executando três aplicativos em contêineres, como no Docker, executa um único sistema operacional e cada contêiner compartilha o kernel do sistema operacional com os outros contêineres. As partes compartilhadas do sistema operacional são somente leitura, enquanto cada contêiner tem sua própria montagem (ou seja, uma maneira de acessar o contêiner) para gravação. Isso significa que os contêineres são muito mais leves e usam muito menos recursos do que as máquinas virtuais.

    O que mais você quer saber? Quais detalhes você está perdendo, exatamente?

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve