O que é um container registry?

Vista aérea de Tóquio

Autores

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

O que é um container registry?

Um container registry é um repositório de dados (ou múltiplos repositórios) que armazena imagens de contêineres para armazenamento e/ou acesso. Imagens de contêineres são arquivos estáticos inalterados que contêm código executável e são executados isoladamente na infraestrutura de TI.

Uma vantagem fundamental dos container registries é a facilidade com que eles se conectam a sistemas ou plataformas de orquestração de contêineres, como Kubernetes e Docker.

Durante o desenvolvimento de aplicações baseadas em contêineres, as equipes também podem usar container registries em uma capacidade de DevOps, permitindo integração otimizada com fluxos de trabalho de integração contínua (CI) e fluxos de trabalho de entrega contínua (CD). Ambos os fluxos de trabalho são atividades principais dentro do desenvolvimento de software. A CI e a CD são ambas baseadas em automação e criadas para acomodar alterações frequentes no código. Elas diferem principalmente porque a CI prepara o código para eventual lançamento, enquanto a CD diz respeito ao lançamento real do código. Os container registries são compatíveis com ambos os fluxos de trabalho.

Há dois tipos de container registries:

  • Os registries públicos possuem formas de otimizar a transferência de dados e um controle de acesso facilitado, mas carecem de protocolos de segurança avançados.
  • Os repositórios privados normalmente são usados em situações que exigem operações mais seguras e uma proteção mais rigorosa das cargas 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 funcionam os container registries?

Um container registry armazena imagens de contêineres, permitindo que os usuários carreguem imagens no registry (um processo chamado "pushing") ou a baixem para um sistema diferente (um processo chamado "pulling").

Um container registry pode ser usado sozinho ou em conjunto com outros container registries. Se vários contêineres forem combinados em uma única unidade operacional para o fornecimento de serviços de nuvem, sua funcionalidade imitará um ecossistema cujos habitantes trabalham em estreita conjunção para fornecer uma produção compartilhada.

Armazenamento de objetos

Os container registries usam o object storage para manifestar metadados sobre imagens de contêineres. Embora isso forneça um meio para transferir esses metadados com sucesso, é, por natureza, limitado. Por exemplo, no caso de dados que possam envolver várias imagens, há limites para o número possível de tags de listagem disponíveis.

Contêineres de dependências

Contêineres de dependência são outro método de armazenamento. Eles permitem o gerenciamento, registro e resolução de dependências em uma aplicação. No contexto da programação, dependências descrevem situações em que um objeto ou processo deve ocorrer antes que outro objeto possa funcionar conforme solicitado.

Essas dependências são gerenciadas por contêineres de dependências, que ajudam a simplificar os testes, aprimorar a escalabilidade e minimizar a necessidade de acoplamento de código (uma interdependência excessivamente forte entre objetos que estão sendo programados), o que pode levar à introdução de erros e problemas de controle de versões.

Autenticação

Dada a necessidade urgente e contínua de segurança online, a autenticação das pessoas que têm acesso aos repositórios é de vital importância. Depende de 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 é fundamental. Os tempos de execução de contêineres são o software que permite que os contêineres funcionem em um sistema host. Os tempos de execução usam uma série de etapas para criar contêineres. Essas etapas abrangem todo o processo de formação de contêineres e inicialização de seu ambiente de acordo com a orientação de uma imagem de contêiner que contém o aplicativo e suas dependências.

Depois que os contêineres são formados, o tempo de execução permanece ativamente envolvido — administrando ciclos de vida de contêineres, rastreando sua viabilidade contínua e removendo os recursos quando não são mais necessários.

Balanceamento de Carga

Os Container Registries também são compatíveis com o balanceamento de carga. No balanceamento de carga nativo do contêiner, o tráfego do balanceador é roteado diretamente para as áreas destinadas a receber esse tráfego. Dessa forma, os Container Registries trabalham lado a lado com os balanceadores de carga, eliminando a necessidade de o tráfego ser roteado por meio de um loop de rede extra.

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.

Benefícios do container registry

Os container registries oferecem vários benefícios, incluindo os seguintes:

Clareza operacional

Os container registries fornecem maior clareza operacional por terem um local dedicado para guardar as imagens para armazenamento de longo prazo. Artistas de produção e desenvolvedores de software geralmente enfrentam uma sobrecarga de ativos. Os container registries aliviam esse problema ao confinar os ativos a um único local.

Desempenho simplificado

Os container registries ajudam a evitar atrasos de desempenho que podem surgir quando a localização exata das imagens não é conhecida, especialmente em momentos de alta prioridade. Os container registries resolvem isso ao fornecer um inventário que pode ser verificado e confirmado a qualquer momento.

Fonte única da verdade

Os registries criam uma fonte única da verdade para qualquer componente ou aplicação e, portanto, há sempre transparência na composição desse componente ou aplicativo. O uso de container registries garante que a iteração mais recente esteja pronta para uso ou replicação, para um controle de versões ideal.

Maior segurança

Os container registries apresentam medidas de segurança aprimoradas para imagens. Os protocolos de acesso ajudam a manter as imagens protegidas do ponto de vista da segurança. Enquanto isso, o escaneamento de vulnerabilidades permite que os usuários vejam profundamente suas imagens e identifiquem problemas ocultos dentro delas.

Casos de uso de container registries

As seguintes atividades fazem uso extenso de container registries:

desenvolvimento de software

O desenvolvimento de software é o principal caso de uso dos container registries, e é por isso que eles foram criados em primeiro lugar — para auxiliar os desenvolvedores de software, dando-lhes um espaço de trabalho para armazenar, acessar e compartilhar imagens.

Entrega de software empresarial

Os container registries privados geralmente são vistos como uma infraestrutura necessária para organizações que estão projetando e entregando aplicativos de software internamente. Os registries privados oferecem aos usuários um maior nível de controle sobre as cadeias de suprimentos de software.

Microsserviços

Muitos container registries ajudam os usuários de microsserviços ao esclarecer o processo de localizar e se conectar a microsserviços específicos em um cluster de contêineres. Esses registries oferecem serviços de Sistema de Nomes de Domínio, que fornecem nomes de imagens e IPs virtuais.

Implementações de aplicações

Os container registries ajudam a promover a iteração rápida de aplicativos devido à natureza modular e leve dos registries. Outros benefícios da implementação são a portabilidade e a consistência dos registries.

Pesquisa científica

Os container registries estão sendo personalizados para fins científicos especializados, como suporte a dados genéticos e capacitação de pesquisas genômicas. Os resultados da pesquisa podem ser facilmente reproduzidos em outros formatos, permitindo que o código-chave e os artefatos sejam compartilhados.

Docker e Kubernetes

Existem dois principais provedores de orquestração de contêineres que dominam o uso de container registries:

Docker

O Docker é um sistema de orquestração de contêineres desenvolvido e lançado em 2013 para ajudar a reduzir a complexidade da criação, implementação e execução de aplicativos. O Docker ganhou popularidade mais recentemente por ser visto como uma maneira fácil de criar contêineres leves, portáteis e autônomos, que podem ser executados em qualquer plataforma, independentemente da infraestrutura. Essa reputação de facilidade de uso ajudou o Docker a se tornar uma opção ideal para quem implementa aplicações dedicadas à inteligência artificial (IA) e ao aprendizado de máquina (ML).

Da mesma forma, os contêineres do Docker oferecem portabilidade suprema, permitindo que sejam migrados de uma máquina para outra, independentemente de sua infraestrutura. Novamente, vemos uma vantagem em que, com o Docker, é relativamente simples lançar aplicativos de IA e ML em ambientes alternativos, como máquinas locais, dispositivos de edge ou servidores em nuvem.

Kubernetes

O Kubernetes é uma plataforma de código aberto para orquestração de contêineres. Também iniciado em 2013 e batizado com o nome de um termo grego para "piloto", o Kubernetes é usado para automatizar vários processos de software, como gerenciamento, implementação e escalonamento.

Em um Kubernetes Service, um ou mais computadores (que podem ser máquinas virtuais ou bare metal servers) estão vinculados em um cluster do Kubernetes, onde cargas de trabalho de contêineres de tamanhos e tipos variados podem ser executadas. O Kubernetes é frequentemente implementado com gráficos Helm, que são coleções de arquivos que funcionam para descrever os vários recursos de um cluster do Kubernetes e, em seguida, empacotar esses recursos combinados como um aplicativo.

O Kubernetes permite o uso de aplicativos de ML conteinerizados e escalonamento simples, além de ser compatível com frameworks e ferramentas de ML. O Kubernetes também pode ser usado como uma plataforma para cargas de trabalho de treinamento de IA.

O Docker e o Kubernetes são semelhantes em muitos aspectos. No entanto, eles diferem na escala que cada um possui porque o Docker é, em sua essência, um tempo de execução de contêineres, enquanto o Kubernetes é uma plataforma completa projetada para acomodar a execução e administração de contêineres de vários tempos de execução de contêineres. Como um indicador da diferença entre os dois, considere que o Kubernetes é grande o suficiente para que o Docker seja apenas um dos vários tempos de execução de contêineres compatíveis com o Kubernetes.

Outros fornecedores líderes de container registries

O mercado para provedores de container registries está sempre evoluindo, com participantes entrando e saindo do mercado a qualquer momento. No entanto, os provedores listados aqui construíram reputações duradouras nesse mercado:

  • Alibaba: o Alibaba Group adota o objetivo de “tornar mais fácil fazer negócios em qualquer lugar”. O Cloud Container Registry do Alibaba permite a replicação de imagens entre instâncias (entidades operacionais) que pertencem à mesma conta. O Alibaba Cloud Container Registry foi projetado para gerenciar imagens em seus respectivos ciclos de vida.
  • 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. O ECR também permite replicação entre contas e regiões, o que permite acesso mais fácil às imagens.
  • DockerHub: o Docker executa seu próprio recurso de imagens conhecido como DockerHub, que oferece acesso gratuito a mais de 100.000 imagens compartilhadas 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. O DockerHub usa uma interface de linha de comando do Docker (CLI do Docker), que permite operações importantes como login, push e pull.
  • GitHub: agora de propriedade da Microsoft, o GitHub foi iniciado em 2007. A plataforma ganhou amplo apoio de desenvolvedores, que apreciam sua capacidade de promover o compartilhamento de código, a colaboração e o gerenciamento de código. (Vale ressaltar que, embora muitas vezes seja confundido com software de código aberto, o GitHub é, de fato, um software proprietário.)
  • GitLab: muitas vezes confundido com o GitHub, o GitLab foi fundado em 2014. O GitLab Container Registry é um registro privado seguro para imagens de contêineres. Ele pode ser usado para produzir e publicar imagens. O Gitlab Container Registry funciona com software de código aberto. A versão mais recente (agora em versão beta) apresenta recursos aprimorados de classificação e filtragem.
  • Google: o container registry "Artifact Registry" do Google Cloud é integrado ao conjunto de ferramentas e aos tempos de execução do Google Cloud e é compatível com o uso de pipelines automatizados. O Google também foi o originador do Kubernetes, com o projeto agora sendo gerenciado por meio dos esforços de colaboradores e a marca comercial sendo detida pela Cloud Native Computing Foundation. Agora, cada um dos provedores de nuvem pública oferece sua própria versão do Kubernetes como um serviço gerenciado.
  • 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 inclui o Azure Container Registry (ACR), que contém imagens do Docker e imagens da Open Container Initiative (OCI), sendo compatível com artefatos do OCI e gráficos Helm. A funcionalidade de registro conectado do ACR (parte da camada de serviço premium do programa) cria uma réplica no local ou remota que sincroniza imagens de contêineres e artefatos do OCI com o ACR baseado em nuvem. Os ACRs podem acomodar imagens do Windows e Linux. Uma maneira de interagir com programas de computador é escrevendo e inserindo linhas de texto, que são chamadas de linhas de comando. Quando um sistema operacional usa esse método de interação, diz-se que ele está incorporando uma interface de linha de comando (CLI). Embora a maioria dos usuários de computador agora dependa de interfaces gráficas de usuário (GUIs), o uso de CLIs ainda é preferido por alguns, especialmente por aqueles que desejam automatizar programas escrevendo scripts. O Azure oferece aos usuários a flexibilidade de usar a popular CLI do Docker para executar operações-chave de imagens de contêineres, como login, push e pull.
  • Red Hat: a Red Hat tem promovido a programação baseada no Linux desde sua criação, em 1993. Seu container registry, o OpenShift Container Platform (OCP), permite que os usuários acessem automaticamente os repositórios de imagens sob demanda e fornece a eles 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