Jump to section

Containers e máquinas virtuais (VMs)

Copiar URL

Os containers Linux® e as máquinas virtuais são ambientes de computação empacotados que combinam vários componentes de TI e os isolam do restante do sistema. As principais diferenças entre eles tema ver com escala e portabilidade.

  • Geralmente, os containers são medidos em megabyte. Eles contêm, no máximo, a aplicação e os arquivos necessários para executá-la. Além disso, eles costumam ser usados para empacotar funções individuais que realizam tarefas específicas, os famosos microsserviços. Como são leves e têm um sistema operacional compartilhado, os containers são muito fáceis de migrar entre vários ambientes.
  • As máquinas virtuais são medidas em gigabyte. Eles costumam ter seu próprio sistema operacional, o que possibilita a execução simultânea de várias funções com uso intenso de recursos. Por terem um número maior de recursos à disposição, as máquinas virtuais são capazes de abstrair, dividir, duplicar e emular por inteiro servidores, sistemas operacionais, desktops, bancos de dados e redes.

Para comparar containers e máquinas virtuais temos que ir além das diferenças tecnológicas: é preciso contrapor as novas práticas de TI e as arquiteturas de TI tradicionais.

As novas práticas de TI (desenvolvimento nativo em nuvem, CI/CD e DevOps) existem graças à divisão das cargas de trabalho nas menores unidades úteis possíveis, que geralmente são uma função ou um microsserviço. Essas unidades são melhor empacotadas em containers. Assim, várias equipes podem trabalhar em partes separadas de uma aplicação ou serviço sem interromper ou pôr em risco o código empacotado em outros containers.

Nas arquiteturas de TI tradicionais (monolíticas e legadas), todos os elementos de uma carga de trabalho são mantidos em um arquivo grande que não pode ser dividido. Por isso, ele precisa ser empacotado como uma unidade completa em um ambiente maior, frequentemente uma máquina virtual. Era comum criar e executar uma aplicação inteira dentro de uma máquina virtual, mesmo sabendo que ao armazenar todo o código e dependências, ela ficava grande demais, e isso poderia gerar falhas em cascata e downtime durante as atualizações.

Isso depende do que você precisa: uma instância pequena de algo que possa ser transferido com facilidade (containers) ou uma alocação semipermanente de recursos de TI personalizados?

Como os containers são pequenos e leves, é possível transferi-los com facilidade entre sistemas bare-metal e nuvens públicas, privadas, híbridas e multiclouds. Eles também são o ambiente ideal para implantar aplicações nativas em nuvem modernas. Essas aplicações são conjuntos de microsserviços projetados para proporcionar uma experiência consistente de desenvolvimento e gerenciamentoautomatizado em ambientes de nuvem pública, privada, híbrida e multicloud. Com as aplicações nativas em nuvem, você acelera a otimização das aplicações que você já possui, a criação de novas e a conexão entre todas elas. A desvantagem é que os containers precisam ser compatíveis com o sistema operacional subjacente. Em comparação com as máquinas virtuais, os containers são mais apropriados para:

  • Criar aplicações nativas em nuvem
  • Empacotar microsserviços
  • Adotar práticas de DevOps e CI/CD
  • Transferir projetos escaláveis entre diversas infraestruturas de TI com o mesmo sistema operacional

Em comparação com um container, é possível executar muito mais operações com as máquinas virtuais. É por isso que elas eram, e ainda são, o método tradicional de empacotamento de cargas de trabalho monolíticas. No entanto, essa funcionalidade ampliada diminui bastante a portabilidade das máquinas virtuais, já que elas dependem do sistema operacional, da aplicação e das bibliotecas. Em comparação com os containers, as máquinas virtuais são mais apropriadas para:

  • Armazenar cargas de trabalho monolíticas, legadas e tradicionais
  • Isolar ciclos de desenvolvimento arriscados
  • Provisionar recursos de infraestrutura, como redes, servidores e dados
  • Executar um sistema operacional diferente dentro de outro, como o Unix no Linux

virtualization vs containers

Virtualização

O hipervisor é um software que separa os recursos das respectivas máquinas físicas para que eles possam ser particionados e dedicados às máquinas virtuais. Quando o usuário emite uma instrução de máquina virtual que exige mais recursos do ambiente físico, o hipervisor retransmite a solicitação ao sistema físico e armazena as mudanças em cache. As máquinas virtuais são similares aos servidores físicos e agem como eles, o que pode multiplicar as desvantagens de grandes infraestruturas de sistema operacional e das dependências da aplicação. Na maioria das vezes, essas infraestruturas não são necessárias para executar uma aplicação ou microsserviços.

Containers

Os containers armazenam um microsserviço ou aplicação, além de todos os elementos necessários para executá-los. Tudo que eles contêm é mantido em um recurso chamado de imagem: um arquivo baseado em código que inclui todas as bibliotecas e dependências. Pense nesses arquivos como uma instalação da distribuição Linux, já que a imagem inclui pacotes RPM e arquivos de configuração. Como os containers são muito pequenos, geralmente há centenas deles levemente acoplados. É por isso que as plataformas de orquestração de containers, como o Red Hat OpenShift e o Kubernetes, são usadas para provisioná-los e gerenciá-los.

Porque há muito tempo oferecemos suporte ao desenvolvimento em containers e à virtualização. Contribuímos com as comunidades do oVirt e da KVM desde seus lançamentos. Além disso, somos o segundo maior colaborador das bases de código Docker e Kubernetes. Também investimos no futuro dessas tecnologias. Com nossa participação no desenvolvimento da virtualização nativa de containers, do KubeVirt e da infraestrutura hiperconvergente, estamos aprimorando a forma como os containers e as máquinas virtuais funcionam simultaneamente em um mesmo sistema de TI.

Leitura recomendada

ARTIGO

Containers x máquinas virtuais

Os containers Linux e as máquinas virtuais são ambientes de computação empacotados que combinam vários componentes de TI e os isolam do restante do sistema.

ARTIGO

O que é orquestração de containers?

A orquestração automatiza a implantação, o gerenciamento, a escala e a rede dos containers.

ARTIGO

O que é um container Linux?

Um container Linux é um conjunto de processos isolados do sistema. Esses processos são executados a partir de uma imagem distinta que oferece todos os arquivos necessários a eles.

Leia mais sobre containers

Soluções Red Hat

Uma plataforma de aplicações para empresas que oferece serviços testados para lançar aplicações na infraestrutura de sua escolha.

Conteúdo adicional

Datasheet

Red Hat OpenShift: tecnologia de container para nuvem híbrida

O Red Hat® OpenShift® é uma plataforma empresarial de containers Kubernetes que ajuda organizações em todo o mundo a criar, implantar, executar, gerenciar e proteger aplicações inovadoras em nuvens híbridas.

Datasheet

Red Hat OpenShift Kubernetes Engine

O Red Hat OpenShift Kubernetes Engine consiste em vários componentes essenciais e totalmente integrados para criação, implantação e gerenciamento de aplicações em containers.

Ebook

Transforme suas aplicações

Conheça as tendências atuais para a transformação de aplicações e como modernizar sua TI usando serviços em nuvem e plataformas de aplicações em nuvem híbrida.

Treinamentos Red Hat

Treinamento gratuito

Running Containers with Red Hat Technical Overview

Treinamento gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Treinamento gratuito

Developing Cloud-Native Applications with Microservices Architectures