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.
Uma imagem de contêiner é um acúmulo reunido de camadas que incluem o seguinte:
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:
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.
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").
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.
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.
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.
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.
Há dois fornecedores de orquestração de contêineres que são fundamentais para o uso de contêineres e imagens de contêineres:
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.
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.
As imagens de contêineres são um componente essencial do uso de container registries.
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.
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.
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.
As atividades a seguir fazem uso extenso de imagens de contêineres:
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.
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 (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.
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:
O Red Hat OpenShift on IBM Cloud é uma plataforma de contêineres OpenShift (OCP) totalmente gerenciada.
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.
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.