O que é uma imagem de contêiner?

9 de agosto de 2024

Autores

Phill Powell

Staff Writer

Ian Smalley

Senior Editorial Strategist

O que é uma imagem de contêiner?

Imagens de contêineres são arquivos estáticos inalterados que contêm código executável e operam isoladamente na infraestrutura de TI.

Uma imagem de contêiner reúne todos os componentes necessários para criar um contêiner em um sistema operacional e compreende diferentes camadas de imagens empilhadas umas sobre as outras. As imagens de contêineres são imutáveis e compartilham as mesmas funções que os modelos.

As imagens de contêineres são armazenadas em um registro de imagens de contêineres (ou container registry), que serve como um tipo de sistema de arquivos. Os registros de contêineres são repositórios de dados (ou vários repositórios) que armazenam imagens de contêineres para armazenamento e/ou acesso.

Uma vantagem notável dos container registries é a facilidade com que eles se conectam a sistemas/plataformas de orquestração de contêineres, como Kubernetes e Docker. Além disso, os container registries podem ser usados em uma capacidade de DevOps durante o desenvolvimento de aplicações baseadas em contêineres, permitindo uma integração otimizada de fluxos de trabalho.

Vista aérea de rodovias

Fique por dentro da nuvem 


Receba o boletim informativo semanal do Think para ver orientações especializadas sobre a otimização das configurações multinuvem na era da IA.

Como as imagens de contêineres são criadas?

Uma imagem de contêiner é um acúmulo reunido de camadas que incluem o seguinte:

  • Imagem de base
  • Bibliotecas
  • Binários
  • Dependências
  • Arquivos de configuração

Em novas imagens criadas a partir do zero, tudo começa com a camada inferior, a imagem de base. A imagem de base é onde a maioria dos fluxos de trabalho de desenvolvimento baseados em contêineres começam. Muitas imagens de base compreendem distribuições Linux básicas ou mínimas (como Debian, Ubuntu, Red Hat Enterprise Linux [RHEL], Rocky Linux ou Alpine). As imagens de base são onde os arquivos do sistema de arquivos do contêiner são armazenados. O processo de criação de imagens de base (conhecido como “construção”) permite que os desenvolvedores construam um ambiente padronizado, compatível com imagens de contêineres personalizadas.

Em seguida, uma sucessão de camadas do sistema de arquivos é adicionada e empilhada sobre a imagem de base, incluindo as seguintes:

  • Bibliotecas necessárias, que são coleções padrão de algoritmos e modelos de classes que os programadores podem usar para criar estruturas de dados comuns (por exemplo, listas, stacks e filas)
  • Binários necessários, que são arquivos executáveis necessários para a implementação de diferentes programas e comandos. As pastas binárias são projetadas para que os usuários possam ter acesso rápido aos executáveis necessários.
  • Várias dependências, que governam a criação e a operação de contêineres.
  • Arquivos de configuração (configs) necessários para executar o contêiner em questão.

Para imagens de contêineres que incorporam imagens existentes, a imagem de base das imagens existentes é conhecida como imagem pai. Se uma imagem é totalmente original, diz-se que ela não tem uma imagem pai.

AI Academy

Preparando-se para a IA com a nuvem híbrida

Liderada pelos principais líderes da IBM, o currículo dessa experiência foi desenvolvido para ajudar líderes empresariais a terem o conhecimento necessário para priorizar os investimentos em IA capazes de estimular o crescimento.

Como as imagens de contêineres funcionam?

As imagens de contêineres são armazenadas em container registries, onde as imagens podem ser carregadas para esse registry ("pushing") ou baixadas para um sistema diferente ("pulling").

Armazenamento de objetos

Os container registries usam o object storage para manifestar metadados sobre imagens de contêineres. Isso oferece um meio para transferir esses metadados com sucesso, mas é limitado. Por exemplo, no caso de dados que envolvem várias imagens, há limites para o número possível de tags de listagens disponíveis.

Contêineres de dependências

Os contêineres de dependências oferecem outro método de armazenamento. Esses contêineres permitem o gerenciamento, o registro e a resolução de dependências dentro de uma aplicação. As dependências descrevem situações em que um objeto ou processo deve ocorrer antes que outro objeto possa funcionar conforme solicitado.

Autenticação

Considerando a necessidade urgente de segurança online, a autenticação dos indivíduos que recebem acesso aos repositórios é essencial. A autenticação usa uma série de permissões específicas para esse container registry. As permissões definem quem está autorizado a usar os recursos do computador a partir de um container registry.

Tempos de execução de contêineres

O conceito de tempos de execução é de vital importância. Os tempos de execução de contêineres são softwares que permitem que os contêineres operem dentro de um sistema host. Os tempos de execução de contêineres usam uma série de etapas para realizar a criação de contêineres. Essas etapas abrangem todo o processo de formação de contêineres e inicialização de seu ambiente, conforme orientado por uma imagem de contêiner que contém o aplicativo e suas dependências.

Docker e Kubernetes

Há dois fornecedores de orquestração de contêineres que são fundamentais para o uso de contêineres e imagens de contêineres:

Docker

O Docker é um sistema de orquestração de contêineres que reduz a complexidade de criar, implementar e executar aplicativos. O Docker é visto como uma maneira fácil de construir contêineres leves e autocontidos que podem ser executados em qualquer plataforma, apesar da infraestrutura específica. Como eles podem ser migrados de uma máquina para outra, os contêineres do Docker também oferecem portabilidade máxima. Além disso, o Docker fornece um meio padrão para a implementação de microsserviços, permitindo que o usuário empacote microsserviços como imagens de contêineres.

O recurso de imagens do Docker é o DockerHub, que oferece acesso gratuito a mais de 100.000 imagens e outros arquivos do Docker compartilhados por usuários do Docker, fornecedores de software e projetos de código aberto. Um serviço pago de container registry do Docker também está disponível para uso privado. As imagens do Docker usam uma interface de linha de comando do Docker (CLI do Docker), que permite operações importantes como login, push e pull. Os usuários criam imagens do Docker com a funcionalidade Docker Build do Docker Engine, que permite o empacotamento e o agrupamento do código-fonte. O Docker pode ser configurado usando arquivos de configuração JSON (JavaScript Object Notation). O JSON é o formato preferido porque mantém todas as configurações em um só lugar.

Kubernetes

O Kubernetes é uma plataforma de código aberto para orquestração de contêineres. O Kubernetes é usado para automatizar vários processos de software, como gerenciamento, implementação e escalonamento. Em um Kubernetes Service, um ou mais computadores (máquinas virtuais ou bare metal servers) são vinculados em um cluster do Kubernets, onde cargas de trabalho de contêineres de tamanhos e tipos variados podem ser executadas. O servidor da interface de programação de aplicativos (API) do Kubernetes configura dados para objetos das APIs, como pods, serviços, controladores de replicação e assim por diante. As APIs permitem que diferentes aplicativos de software se comuniquem e compartilhem dados em total cooperação entre si.

Embora o Docker e o Kubernetes forneçam serviços semelhantes, eles diferem em seus respectivos sensos de escala. O Docker é um tempo de execução de contêineres, mas o Kubernetes é uma plataforma completa que acomoda contêineres de vários tempos de execução de contêineres. O Docker é apenas um dos tempos de execução de contêineres compatíveis com o Kubernetes.

Benefícios das imagens de contêineres

As imagens de contêineres são um componente essencial do uso de container registries.

Implementação rápida

As imagens de contêineres são destinadas e projetadas para conter tudo o que é necessário para executar um contêiner. Depois que as imagens de contêineres forem criadas, tudo o que será necessário para executar contêineres será o prompt adequado do sistema de computador. Isso torna as imagens de contêineres perfeitamente adequadas para implementação rápida.

Prontidão constante

As prioridades de negócios geralmente mudam da noite para o dia. Ao criar imagens de contêiner com antecedência, uma organização pode prever todas as suas necessidades potenciais de contêineres e, posteriormente, selecionar os contêineres mais adequados para esse período e finalidade. As imagens de contêineres oferecem às organizações a capacidade de mudar de acordo com as condições.

Uso seguro

A segurança das imagens de contêineres é mantida por meio de controles de acesso impostos pelos container registries. Isso inclui protocolos de autenticação para garantir que pessoas não autorizadas tenham acesso negado às imagens de contêineres. A criptografia de imagens é usada rotineiramente agora para codificar imagens e protegê-las de vulnerabilidades.

Casos de uso de imagens de contêineres

As atividades a seguir fazem uso extenso de imagens de contêineres:

Aplicativos nativos da nuvem

Implementações baseadas em contêineres (capacitadas pelo uso de imagens de contêineres) são compatíveis com arquiteturas nativas da nuvem e fornecem o isolamento e a flexibilidade necessários. Contêineres e imagens de contêineres permitem que os usuários criem e otimizem aplicativos escaláveis nativos da nuvem.

Microsserviços

Muitos container registries (e as imagens de contêineres neles) auxiliam os usuários de microsserviços, esclarecendo o processo de localização e conexão a um microsserviço específico em um cluster de contêineres.

Máquinas virtuais

Máquinas virtuais (VMs) são sistemas de computador que usam software em um computador para imitar as funções de outro computador. As VMs têm um relacionamento único com imagens de contêineres. Os usuários geralmente substituem VMs como um sistema operacional host para contêineres, em vez de executar contêineres diretamente no hardware, especialmente quando os contêineres precisam ser executados na nuvem.

Principais provedores de imagens de contêineres

O mercado de provedores de imagens de contêineres é fluido e dinâmico, com muita atividade e vários players no setor entrando e saindo do mercado. No entanto, os seguintes provedores construíram reputações duradouras nesse mercado:

  • Amazon: a Amazon Web Services (AWS) opera o Amazon Elastic Container Registry (ECR), incorporando o uso do Amazon Inspector, que gerencia a verificação de vulnerabilidades de imagens de contêineres. O ECR também é compatível com a replicação entre contas e entre regiões, facilitando o acesso às imagens.
  • Apache: o Apache é um software de servidor da web de código aberto que está disponível gratuitamente e é oferecido pela Apache Software Foundation, que estima que o software Apache seja executado em aproximadamente 30% de todos os servidores da web.
  • GitHub: a plataforma GitHub (agora propriedade da Microsoft) ganhou amplo apoio de desenvolvedores, que apreciam a forma como esse software proprietário permite o compartilhamento e o gerenciamento de código e esforços de colaboração.
  • IBM: o IBM Cloud Container Registry permite que os usuários iniciem facilmente seu próprio registro e comecem a enviar imagens privadas para o registro, para uso com o IBM Cloud Kubernetes Service. Os usuários têm o benefício da privacidade de ter seu próprio registro totalmente gerenciado. O serviço, que pode ser testado sem custo, possui preços pay-as-you-go, para que os usuários paguem apenas pelo que consomem.
  • Microsoft: a plataforma Azure da Microsoft usa o Azure Container Registry (ACR), que armazena imagens do Docker e imagens do Open Container Initiative (OCI), sendo compatível com artefatos do OCI. A funcionalidade de registro conectado do ACR (parte do nível de serviço premium do programa) constrói uma réplica no local ou remota que sincroniza imagens de contêineres e artefatos do OCI com o ACR baseado em nuvem, que pode acomodar imagens do Windows e do Linux. Um método de interação com programas de computador envolve escrever e inserir linhas de texto, também conhecidas como linhas de comando. Os sistemas operacionais que usam esse método de interação incorporam uma interface de linha de comando (CLI). A maioria dos usuários de computador agora depende de interfaces gráficas de usuário (GUIs), embora as CLIs ainda sejam preferidas por aqueles que escrevem scripts como parte dos esforços de automação. O Azure oferece aos usuários a flexibilidade de usar a CLI do Docker para executar as principais operações de imagens de contêineres.
  • Python: o Python é uma linguagem de programação interpretada, orientada a objetos e de alto nível oferecida pela Python Software Foundation. Suas estruturas de dados integradas tornam o Python perfeitamente adequado para cargas de trabalho que exigem o rápido desenvolvimento de aplicações. A principal vantagem do Python para programadores de software é a facilidade de uso, em grande parte devido à falta de uma etapa de compilação. Isso permite que os programadores usem um ciclo de depuração acelerado, o que economiza tempo.
  • Red Hat: a Red Hat defende a programação baseada no Linuxdesde o início da empresa, em 1993. O container registry que a Red Hat oferece, o OpenShift Container Platform (OCP), permite que os usuários acessem automaticamente os repositórios de imagens sob demanda e também oferece aos usuários um local padrão para enviar as imagens que resultam das criações de aplicações.
Soluções relacionadas
IBM Red Hat OpenShift

O Red Hat OpenShift on IBM Cloud é uma plataforma de contêineres OpenShift (OCP) totalmente gerenciada.

Explore o Red Hat OpenShift
Soluções de contêiner

As soluções de contêineres executam e escalam cargas de trabalho conteinerizadas com segurança, inovação de código aberto e implementação rápida.

Explore contêineres
Serviços de consultoria em nuvem 

Libere novos recursos e aumente a agilidade dos negócios com os serviços de consultoria em nuvem da IBM. Descubra como cocriar soluções, acelerar a transformação digital e otimizar o desempenho por meio de estratégias de nuvem híbrida e parcerias especializadas.

Serviço de nuvem
Dê o próximo passo

Modernize sua infraestrutura com as soluções de contêineres da IBM. Execute, escale e gerencie cargas de trabalho conteinerizadas em todos os ambientes com flexibilidade, segurança e eficiência usando a abrangente plataforma de contêineres da IBM.

Explore soluções de contêineres Crie sua conta gratuita na IBM Cloud