Como os contêineres entraram na existência

ABHI KHANDELWAL Segue 4 de jul · 4 min ler

Neste blog, discutirei os conceitos de Contêineres, mas primeiro precisamos entender quando esse termo surgiu e como isso facilitou a vida de um desenvolvedor.

Para isso, primeiro temos que entender que o precursor dos Containers, por que houve a necessidade de mudar para contêineres, e discutir a arquitetura de máquinas virtuais e contêineres.

Embora o objetivo de ambos os termos seja semelhante (ou seja, isolar um aplicativo e suas dependências em um ambiente independente que pode ser executado em qualquer lugar). Isso significa que ele pode ser executado em sua máquina local, na máquina de seu colega de trabalho ou em um serviço do provedor de nuvem, como o AWS.

A principal diferença entre máquinas virtuais e contêineres é sua abordagem arquitetônica à virtualização de um sistema operacional.

Agora, vamos nos aprofundar em sua abordagem arquitetônica individual.

Máquinas virtuais

Máquinas virtuais basicamente nos fornecem a capacidade de emular o sistema operacional separado. Isso significa que nos permite executar um sistema operacional dentro de outro sistema operacional.

Suponha que seu sistema esteja usando um sistema operacional Windows e você queira executar um sistema operacional Linux em seu sistema. Nesse caso, uma máquina virtual entra em jogo. Na verdade, mais de uma VM pode viver em um único servidor físico.

Vamos discutir sua arquitetura:

Arquitetura de Máquina Virtual.

Na figura acima, há 3 VMs em execução na parte superior do hipervisor. Essas VMs que estão em execução no sistema operacional host ( usando o hipervisor ) também são chamadas de sistema operacional “guest”. Esses sistemas operacionais convidados contêm todas as dependências e necessidades do aplicativo. As máquinas host também fornecem recursos ( novamente usando o hipervisor ), como RAM e CPU, para as máquinas virtuais. Esses recursos podem ser divididos de acordo com as necessidades dos aplicativos.

Vamos tornar isso mais simples: um hypervisor é um software / firmware usado para compartilhar recursos do sistema operacional host para o sistema operacional convidado; há dois tipos de hypervisors.

  • Hypervisor de metal nua
    Esse tipo de interface do Hypervisor diretamente com o hardware não precisa de um sistema operacional host para ser executado.

Fonte: IBM

  • Hypervisor Hospedado
    Esse tipo de hipervisor é um software executado no sistema operacional host

Fonte: IBM

Como sabemos que em nosso mundo moderno, nossos aplicativos podem consumir muitos recursos, e isso aumenta rapidamente o uso de RAM e CPU, o que não é econômico, o que levou os desenvolvedores a mudar de máquinas virtuais para contêineres.

Recipientes

Os contêineres também fornecem uma maneira de isolar o aplicativo e fornecer uma plataforma virtual para os aplicativos serem executados. Então, como é diferente das máquinas virtuais?

  • As máquinas virtuais fornecem virtualização de nível físico / hardware, mas os contêineres oferecem virtualização no nível do sistema operacional, também conhecida como conteinerização. Isso nos permite lidar com várias plataformas isoladas que não usam os recursos físicos do dispositivo host. Esta é uma abordagem mais eficaz em termos de memória e uso da CPU.
  • Os contêineres compartilham o kernel do sistema do host com outros contêineres.

Vamos discutir esses dois pontos.

Arquitetura de contêineres.

Eu acho que esta figura não tem algo sobre a função de um hipervisor, existem vários contêineres em execução em um único motor Container. O compartilhamento do espaço do kernel (SO) com outros contêineres torna os contêineres muito leves em comparação com as máquinas virtuais.

Em geral, os contêineres são gerenciados por um Container Engine, que é responsável por alocar recursos para a execução de contêineres, comunicando-se com o kernel. A virtualização baseada em contêiner usa o kernel do sistema operacional do host para executar instâncias guest, também conhecidas como virtualização do nível do sistema operacional. Como Containers não consistem em um sistema operacional guest, isso significa que o contêiner não requer seu próprio sistema operacional. Ele usa menos recursos e consome apenas os recursos necessários para o aplicativo que é executado ao iniciar o contêiner.

Como discutimos anteriormente, os contêineres compartilham o kernel do sistema host com outros. O compartilhamento de recursos do SO, como bibliotecas, reduz significativamente a necessidade de reproduzir o código do sistema operacional, e isso significa que um servidor pode executar várias cargas de trabalho com uma única instalação do sistema operacional.

Os benefícios das aplicações de Containers over Virtual Machines são:

  • Pequeno em tamanho
  • Eles compartilham o kernel do sistema host
  • Comece muito mais rápido
  • Eles usam uma fração da memória em comparação com a inicialização de um sistema operacional inteiro

Mas apenas porque os contêineres são extremamente populares, isso não significa que as máquinas virtuais estejam desatualizadas. Se a primeira prioridade da sua empresa for a segurança, você também desejará permanecer com as VMs por enquanto .

No mundo real, espero que a maioria de nós esteja executando tanto containers quanto VMs em nossas nuvens e data centers. A economia de contêineres em escala faz muito sentido financeiro para qualquer um ignorar.

Obrigado pela leitura, espero que tenha gostado. 🙂