O que é um contêiner?

Os contêineres são pacotes de software que têm todos os arquivos e dependências necessários para serem executados em qualquer ambiente, incluindo código de aplicação, tempo de execução, bibliotecas de sistema e ferramentas do sistema. Ao virtualizar o sistema operacional, os contêineres podem ser executados em ambientes de desenvolvimento, teste e produção ou em qualquer ambiente de computação, de dispositivos pessoais a nuvens públicas ou data centers privados.

Como funcionam os contêineres?

Os contêineres envolvem vários componentes.

  • As imagens de contêiner são pacotes completos, estáticos, leves e executáveis de software que contêm todas as informações necessárias para executar um contêiner. Há vários formatos de imagem de contêiner. O mais comum é a OCI (Open Container Initiative).
  • Os mecanismos de contêiner acessam imagens de contêiner a partir de um repositório e as executam. Alguns dos mecanismos de contêiner mais comuns incluem Docker, CRI-O, Containerd, runC, LXD e RKT. Os mecanismos de contêiner podem ser executados em qualquer host de contêiner, incluindo dispositivos pessoais, servidores físicos ou na nuvem.
  • Os contêineres são imagens de contêiner que foram executadas pelo mecanismo de contêiner. O sistema operacional host, normalmente Linux, Mac ou Microsoft Windows, limita a capacidade do contêiner de acessar recursos como CPU, memória e armazenamento, impedindo que um contêiner consuma uma quantidade desproporcional de recursos físicos.
  • O agendador de contêineres e a tecnologia de orquestração gerenciam a implantação e a execução de contêineres.

O que é conteinerização?

A conteinerização é a tarefa de agrupar o código de software com o sistema operacional, bibliotecas, arquivos de configuração e outras dependências necessárias para executar o código. Ao oferecer uma abordagem de "criar uma vez, executar em qualquer lugar" para o desenvolvimento de software, as aplicações conteinerizadas permitem que os desenvolvedores criem e implantem aplicações com mais rapidez e segurança.

Por que os contêineres são necessários?

Como a transformação digital (link para /glossary/what-is-digital-transformation) tornou o mundo mais interconectado, as aplicações frequentemente precisam ser executadas em muitos ambientes diferentes. No passado, muitas aplicações não eram executadas corretamente sem modificação quando movidas de um ambiente para outro, normalmente devido a diferenças de configuração na infraestrutura subjacente e nas dependências.

Os contêineres resolvem esse problema empacotando o software em uma infraestrutura leve que contém tudo o que é necessário para que uma aplicação seja executada. Dessa forma, os contêineres permitem que os desenvolvedores e as equipes de TI implantem software em ambientes sem a necessidade de modificar o código. Como resultado, as equipes de TI podem contar com um comportamento consistente em diferentes máquinas e ambientes. Os desenvolvedores podem fazer alterações no código e adicionar novas dependências aos contêineres sem se preocupar se o código revisado será incompatível com vários ambientes.

O que é um contêiner vs. uma máquina virtual?

Máquinas virtuais (VMs) são outro modelo de computação virtualizada. As VMs usam um hipervisor para virtualizar o hardware físico necessário para executar um servidor, e cada VM contém um sistema operacional convidado juntamente com aplicações, bibliotecas e dependências. As VMs podem consumir uma quantidade significativa de recursos do sistema, especialmente quando várias VMs, cada uma com seu próprio sistema operacional convidado, estão sendo executadas no mesmo servidor físico.

Em contrapartida, a tecnologia de contêineres é virtualizada no nível do sistema operacional, e não no nível do hardware, e vários contêineres compartilham o mesmo SO host ou kernel do sistema. Como resultado, os contêineres usam uma pequena fração da memória exigida pelas VMs, já que os contêineres compartilham o kernel do SO. Isso também permite que os contêineres inicializem em segundos, enquanto as VMs podem levar vários minutos.

Para que serve um contêiner?

Os contêineres oferecem suporte a vários casos de uso.

  • DevOps. Os contêineres permitem que as equipes de desenvolvimento de aplicações adotem um modelo de desenvolvimento nativo da nuvem para DevOps, integração contínua e implantação contínua (CI/CD) e estruturas sem servidor.
  • Microsserviços. A qualidade leve dos contêineres os torna ideais para arquiteturas de microsserviços nas quais o software é composto por vários serviços menores e pouco acoplados.
  • Computação em nuvem. Como os contêineres oferecem desempenho consistente em qualquer lugar, eles são ideais para implantações multinuvem e de nuvem híbrida , em que as workloads podem se mover entre ambientes de nuvem pública e data center privado.
  • Migração para a nuvem. Os contêineres são frequentemente usados para modernizar aplicações à medida que as equipes de TI as preparam para a migração para a nuvem. Os contêineres também são candidatos ideais para serviços que serão refatorados durante a migração.

Quais são os benefícios dos contêineres?

Os contêineres oferecem às organizações muitas vantagens, incluindo:

  • Maior eficiência. Como eles compartilham o mesmo kernel do sistema operacional que o host, os contêineres são mais eficientes do que as VMs.
  • Gerenciamento facilitado. Os contêineres possibilitam implantar, aplicar patches e escalonar aplicações rapidamente.
  • Portabilidade da workload. Os contêineres permitem que as equipes de TI implantem e executem workloads em qualquer lugar, em sistemas operacionais Linux, Windows ou Mac, em VMs ou servidores físicos e em dispositivos individuais, data centers locais e na nuvem.
  • Desempenho consistente. Os contêineres oferecem desempenho confiável em vários sistemas operacionais e plataformas.
  • Menor sobrecarga. Em comparação com computadores e VMs tradicionais, os contêineres têm muito menos requisitos de recursos do sistema para memória, CPU e armazenamento. Isso possibilita o suporte a muitos mais contêineres na mesma infraestrutura.
  • Utilização otimizada. Ao habilitar uma arquitetura de microsserviços, os contêineres facilitam a implantação e o escalonamento granular dos componentes da aplicação, evitando a necessidade de escalonar uma aplicação inteira quando um único componente não consegue gerenciar uma workload.

O que é orquestração de contêineres?

A orquestração de contêineres é a tarefa de gerenciar várias implantações de contêineres em uma organização. Um orquestrador de contêineres é uma plataforma que automatiza o ciclo de vida do gerenciamento de contêineres, incluindo tarefas como provisionamento e implantação, alocação de recursos, manutenção do tempo de atividade, dimensionar verticalmente e horizontalmente, descoberta de serviços, rede, armazenamento e segurança.

A orquestração oferece visibilidade e controle sobre onde os contêineres são implantados e como as workloads são alocadas em vários contêineres. A orquestração evita a necessidade de gerenciar contêineres manualmente e permite que as equipes de TI apliquem políticas de forma seletiva ou coletiva a um grupo de contêineres.

O Kubernetes é a plataforma de orquestração de contêineres mais conhecida e pode ser implantado em qualquer infraestrutura, incluindo nuvens públicas, redes locais ou de edge. O Red Hat® OpenShift® é uma plataforma Kubernetes pronta para empresas que fornece operações automatizadas e completas em qualquer infraestrutura, juntamente com ambientes de autoatendimento para a criação de contêineres.

Quais são as ameaças à segurança dos contêineres?

Embora os contêineres permitam que as equipes de TI implantem software em qualquer lugar e iniciem aplicações rapidamente, eles também criam outra área de preocupação com a segurança. Os desenvolvedores e as equipes de TI podem tomar várias medidas para impedir que os contêineres sejam explorados por invasores, incluindo:

  • Adotar as práticas recomendadas de segurança e adicionar validações no nível da aplicação/código
  • Executar contêineres em um serviço seguro, como o Kubernetes
  • Adicionar restrições de rede no nível do cluster para filtrar o tráfego não autorizado
  • Escolher uma plataforma de contêiner segura e confiável no nível da nuvem
  • Procurar malware em imagens de contêiner
  • Impor controles fortes em registros de contêineres
  • Usar ferramentas de segurança para resolver vulnerabilidades que podem se tornar ativas durante o tempo de execução do contêiner

Perguntas frequentes

Os contêineres apareceram pela primeira vez há várias décadas, mas foram reintroduzidos pelo Docker em 2013 para atender às demandas da era da computação moderna.

O Docker é uma plataforma de código aberto para criar, implantar e gerenciar contêineres em um sistema operacional comum. A plataforma Docker empacota, provisiona e executa contêineres, usando isolamento de recursos no kernel do SO para executar vários contêineres no mesmo sistema operacional.

O Kubernetes é uma plataforma de orquestração de contêineres de código aberto para automatizar, implantar, dimensionar e gerenciar aplicações, workloads e serviços em contêineres.

A Open Container Initiative (OCI) é uma estrutura de governança aberta sob a Linux Foundation dedicada à criação de padrões abertos do setor para formatos e tempos de execução de contêineres.

Por que os clientes escolhem a Akamai

A Akamai é a empresa de cibersegurança e computação em nuvem que potencializa e protege negócios online. Nossas soluções de segurança líderes de mercado, inteligência avançada contra ameaças e equipe de operações globais oferecem defesa em profundidade para garantir a segurança de dados e aplicações empresariais em todos os lugares. As abrangentes soluções de computação em nuvem da Akamai oferecem desempenho e acessibilidade na plataforma mais distribuída do mundo. Empresa globais confiam na Akamai para obter a confiabilidade, escala e experiência líderes do setor necessárias para expandir seus negócios com confiança.

Explore todas as soluções de segurança da Akamai