O que são contêineres?
Explore as soluções de contêineres da IBM Inscreva-se para receber atualizações sobre a nuvem
Ilustração com colagem de pictogramas de monitor de computador, servidor, nuvens, pontos
O que são contêineres?

Contêineres são unidades executáveis de software nas quais o código do aplicativo é empacotado junto com suas bibliotecas e dependências, de formas comuns, para que o código possa ser executado em qualquer lugar, seja no desktop, na TI tradicional ou na nuvem.

Os contêineres aproveitam uma forma de virtualização do sistema operacional (SO) na qual os recursos do kernel do SO (por exemplo, namespaces e cgroups do Linux, silos do Windows e objetos de trabalho) podem ser usados para isolar processos e controlar a quantidade de CPU, memória e disco que esses processos podem acessar.

Os contêineres são pequenos, rápidos e portáteis porque, ao contrário de uma virtual machine, os contêineres não precisam incluir um sistema operacional convidado em todas as instâncias e, em vez disso, podem simplesmente usar os recursos e funcionalidades do sistema operacional host.

Os contêineres apareceram pela primeira vez há décadas com versões como FreeBSD Jails e AIX Workload Partitions, mas a maioria dos desenvolvedores modernos se lembra de 2013 como o início da era moderna dos contêineres, com o lançamento do Docker.

A modernização estratégica de aplicativos gera transformação digital

A modernização estratégica de aplicativos é uma chave para o sucesso transformacional que pode aumentar a receita anual e reduzir os custos de manutenção e operação.

Conteúdo relacionado

Registre-se para receber o guia sobre DaaS

Contêineres versus virtual machines

Uma forma de entender melhor um contêiner é compreender como ele difere de uma virtual machine (VM) tradicional. Na virtualizaçãotradicional, seja no local ou na nuvem, um hipervisor é usado para virtualizar o hardware físico. Em seguida, cada VM contém um sistema operacional convidado e uma cópia virtual do hardware do qual o sistema operacional precisa para ser executado, juntamente com um aplicativo e suas bibliotecas e dependências associadas.

Em vez de virtualizar o hardware subjacente, os contêineres virtualizam o sistema operacional (normalmente Linux) para que cada contêiner individual contenha somente o aplicativo e suas bibliotecas e dependências. A ausência do sistema operacional convidado é o motivo pelo qual os contêineres são tão leves e, portanto, rápidos e portáteis.

Para uma análise mais profunda dessa comparação, confira "Containers vs. VMs: What's the difference?"

Benefícios dos contêineres

A principal vantagem dos contêineres, especialmente em comparação com uma VM, é que eles fornecem um nível de abstração que os torna leves e portáteis. Seus principais benefícios incluem:

Leves: os contêineres compartilham o kernel do sistema operacional da máquina, eliminando a necessidade de uma instância completa do sistema operacional por aplicativo e tornando os arquivos dos contêineres pequenos e fáceis de usar. Seu tamanho menor, especialmente em comparação com VMs, significa que os contêineres podem funcionar rapidamente e oferecer suporte melhor a aplicativos nativos da nuvem que são dimensionados horizontalmente.

Portáteis e independentes de plataforma: os contêineres carregam todas as suas dependências com eles, o que significa que o software pode ser escrito uma vez e depois executado sem a necessidade de ser reconfigurado em notebooks, na nuvem e em ambientes de computação locais.

Compatíveis com desenvolvimento e arquitetura modernos: devido a uma combinação de sua portabilidade/consistência de implementação em todas as plataformas e seu tamanho pequeno, os contêineres são ideais para padrões modernos de desenvolvimento e aplicativos, como DevOpsserverless e microsserviços, que são construídos usando implementações de código regular em pequenos incrementos.

Melhoram a utilização: como as VMs antes delas, os contêineres permitem que desenvolvedores e operadores melhorem a utilização da CPU e da memória de máquinas físicas. Onde os contêineres vão ainda mais longe é que, como eles também permitem a arquitetura de microsserviços, os componentes do aplicativo podem ser implementados e dimensionados de forma mais granular. Essa é uma opção alternativa atraente em comparação com ter que dimensionar um aplicativo monolítico inteiro porque um único componente está tendo problemas com sua carga.

Em uma pesquisa recente da IBM, desenvolvedores e executivos de TI relataram muitos outros benefícios do uso de contêineres.

Baixe o relatório completo: Containers in the enterprise

Casos de uso para contêineres

Os contêineres estão se tornando cada vez mais proeminentes, especialmente em ambientes de nuvem. Muitas organizações estão até mesmo considerando os contêineres como um substituto das VMs como plataforma de computação de uso geral para seus aplicativos e cargas de trabalho. Mas dentro desse amplo escopo, existem casos de uso importantes nos quais os contêineres são especialmente relevantes.

  • Microsserviços: os contêineres são pequenos e leves, o que os torna uma boa opção para arquiteturas de microsserviços, nas quais os aplicativos são construídos com muitos serviços menores, fracamente acoplados e implementáveis de forma independente.
  • DevOps: a combinação de microsserviços como arquitetura e contêineres como plataforma é uma base comum para muitas equipes que adotam o DevOps como a forma como constroem, enviam e executam software.
  • Híbridos e multinuvem: como os contêineres podem ser executados de forma consistente em qualquer lugar — em notebooks, no local e na nuvem — eles são uma arquitetura subjacente ideal para cenários de nuvem híbrida e multinuvem , nos quais as organizações se encontram operando em um conjunto de várias nuvens públicas em combinação com seu próprio data center.
  • Modernização e migração de aplicativos: uma das abordagens mais comuns para a modernização de aplicativos é conteinerizá-los em preparação para a migração para a nuvem.
Conteinerização

O software precisa ser projetado e empacotado de forma diferente para aproveitar os contêineres — um processo comumente chamado de  conteinerização.

Ao conteinerizar um aplicativo, o processo inclui o empacotamento de um aplicativo com suas variáveis de ambiente, arquivos de configuração, bibliotecas e dependências de software relevantes. O resultado é uma imagem de contêineres que pode ser executada em uma plataforma de contêineres.

Orquestração de contêineres com Kubernetes

À medida que as empresas começaram a adotar contêineres, muitas vezes como parte de arquiteturas modernas e nativas da nuvem, a simplicidade do contêiner individual começou a colidir com a complexidade de gerenciar centenas (ou até milhares) de contêineres em um sistema distribuído.

Para enfrentar esse desafio, a orquestração de contêineres surgiu como uma forma de gerenciar grandes volumes de contêineres em todo o seu ciclo de vida, incluindo:

  • Fornecimento
  • Redundância
  • Monitoramento do funcionamento
  • Alocação de recursos
  • Dimensionamento e balanceamento de carga
  • Movimentação entre hosts físicos

Embora muitas plataformas de orquestração de contêineres (como Apache Mesos, Nomad e Docker Swarm) tenham sido criadas, o Kubernetes, um projeto de código aberto lançado pelo Google em 2014, rapidamente se tornou a plataforma de orquestração de contêineres mais popular, e a maior parte do setor baseou sua padronização nele.

O Kubernetes permite que desenvolvedores e operadores declarem um estado desejado de seu ambiente geral de contêineres por meio de arquivos YAML e, em seguida, o Kubernetes faz todo o trabalho de processamento de estabelecer e manter esse estado, com atividades que incluem a implementação de um número especificado de instâncias de um determinado aplicativo ou carga de trabalho, reinicializando esse aplicativo em caso de falha, balanceando a carga, dimensionando automaticamente, realizando implementações com downtime zero e muito mais.

O Kubernetes agora é operado pela Cloud Native Computing Foundation (CNCF), que é um grupo setorial independente de fornecedor operado sob os auspícios da Linux Foundation.

Istio, Knative e o ecossistema de contêineres em expansão

À medida que os contêineres continuam ganhando força como uma forma popular de empacotar e executar aplicativos, o ecossistema de ferramentas e projetos projetados para acomodar e expandir os casos de uso de produção continua a crescer. Além do Kubernetes, dois dos projetos mais populares no ecossistema de contêineres são o Istio e o Knative.

istio

À medida que os desenvolvedores usam contêineres para criar e executar arquiteturas de microsserviços, as preocupações da administração vão além das considerações de ciclo de vida de contêineres individuais e das maneiras como um grande número de pequenos serviços — geralmente chamados de "malha de serviço" — se conectam e se relacionam entre si. O Istio foi criado para tornar mais fácil para os desenvolvedores gerenciar os desafios associados à descoberta, tráfego, monitoramento, segurança e muito mais. 

Saiba mais sobre o Istio

knative

As arquiteturas serverless também continuam crescendo em popularidade, especialmente na comunidade nativa da nuvem. O Knative, por exemplo, oferece valor substancial em sua capacidade de implementar serviços conteinerizados, como funções serverless.

Em vez de ser executada o tempo todo e responder quando necessário (como faz um servidor), uma função serverless pode "escalar até zero", o que significa que ela não será sendo executada a menos que seja chamada. Esse modelo pode economizar grandes quantidades de poder de computação quando aplicado a dezenas de milhares de contêineres.  

Soluções relacionadas
Red Hat OpenShift on IBM Cloud

O Red Hat OpenShift on IBM Cloud utiliza o OpenShift em ambientes públicos e híbridos para velocidade, capacidade de resposta ao mercado, escalabilidade e confiabilidade.

Conheça o Red Hat OpenShift on IBM Cloud
IBM Cloud Pak for Applications

Seja na implementação, na criação de novos aplicativos nativos da nuvem, na refatoração ou na reformulação de aplicativos existentes, o CP4Apps oferece tudo isso.

Explore o IBM Cloud Pak for Applications
IBM Cloud Satellite

Com o IBM Cloud Satellite, é possível implementar serviços em nuvem consistentes em qualquer lugar, seja em ambientes locais, na borda ou em ambientes de nuvem pública.

Explore o IBM Cloud satélite
IBM Cloud Code Engine

Execute imagens de contêineres, tarefas em lote ou código fonte como cargas de trabalho serverless sem a necessidade de dimensionamento, implementação, rede ou dimensionamento.

Explore o IBM Cloud Code Engine
IBM Cloud Container Registry

O IBM Cloud Container Registry fornece um registro privado que permite gerenciar suas imagens e monitorá-las quanto a problemas de segurança.

Explore o IBM Cloud Container Registry
Otimize Kubernetes com IBM Turbonomic

Determine automaticamente as ações corretas de alocação de recursos — e quando realizá-las — para ajudar a garantir que seus ambientes de Kubernetes e aplicativos de missão crítica recebam exatamente aquilo de que precisam para atender aos seus SLOs.

Explore o IBM Turbonomic
Recursos Contêineres na empresa

A nova pesquisa da IBM documenta o impulso crescente do container e da adoção do Kubernetes.

Combine os melhores recursos da nuvem e da TI tradicional

A orquestração de contêineres é um componente essencial de uma estratégia de nuvem híbrida aberta que permite criar e gerenciar cargas de trabalho de qualquer lugar.

O que é Docker?

O Docker é uma plataforma de código aberto para construir, implementar e gerenciar aplicativos conteinerizados.

Dê o próximo passo

O Red Hat OpenShift no IBM Cloud oferece aos desenvolvedores uma maneira rápida e segura de conteinerizar e implementar cargas de trabalho corporativas em clusters Kubernetes. Transfira tarefas tediosas e repetitivas que envolvem gerenciamento de segurança, gerenciamento de conformidade, gerenciamento de implementação e gerenciamento contínuo do ciclo de vida. 

Conheça o Red Hat OpenShift on IBM Cloud Comece a usar sem custos