Conceitos do Container Registry

Descubra os principais conceitos que você precisa entender antes de usar o Container Registry.

Este tópico descreve os principais conceitos que você precisa entender ao usar o Oracle Cloud Infrastructure Registry (também conhecido como Container Registry).

Imagens

Container Registry é um registro compatível com a Open Container Initiative. Como resultado, você pode armazenar qualquer artefato que esteja em conformidade com as especificações da Open Container Initiative, como imagens do Docker, listas de manifestos (às vezes conhecidas como imagens de várias arquiteturas) e gráficos Helm. As instruções nesta documentação supõem que você esteja armazenando e recuperando imagens de contêiner do Docker usando a CLI do Docker. As imagens de contêiner do Docker geralmente são chamadas de imagens do Docker ou simplesmente de imagens.

Uma imagem do Docker é um modelo somente para leitura com instruções para criar um contêiner do Docker. Uma imagem do Docker mantém o aplicativo que você deseja que o Docker execute como um contêiner, junto com quaisquer dependências. Para criar uma imagem do Docker, primeiro crie um Dockerfile para descrever esse aplicativo. Em seguida, crie a imagem do Docker com base no Dockerfile. Depois de criar uma imagem do Docker, você a armazena em um registro do Docker, como o Container Registry.

Normalmente, você agrupará versões diferentes da mesma imagem do Docker em um repositório nomeado no registro (por exemplo, em um repositório chamado 'project01/acme-web-app') e dará a cada versão da imagem um identificador diferente (por exemplo, '4.6.3'). Portanto, cada imagem no registro é identificada exclusivamente pela combinação de seu nome de repositório e seu identificador de versão (por exemplo, 'project01/acme-web-app:4.6.3', 'project01/acme-web-app:4.6.4', e assim por diante).

Repositórios

Repositório é uma coleção significativamente nomeada de imagens relacionadas agrupadas por conveniência no Registro de Contêiner. Normalmente, você agrupará versões diferentes da mesma imagem de origem no mesmo repositório (por exemplo, em um repositório chamado project01/acme-web-app) e dará a cada versão da imagem um identificador diferente (por exemplo, 4.6.3). Portanto, cada imagem no registro é identificada exclusivamente pela combinação de seu nome de repositório e seu identificador de versão (por exemplo, project01/acme-web-app:4.6.3, project01/acme-web-app:4.6.4 etc.).

Os repositórios podem ser privados ou públicos. Qualquer usuário com acesso à Internet e conhecimento do URL apropriado pode extrair imagens de um repositório público no Container Registry.

Existe um repositório em uma tenancy, região e compartimento específicos. Ao fazer referência à tenancy que possui um repositório, especifique o namespace da tenancy. O namespace da tenancy é uma string aleatória gerada automaticamente de caracteres alfanuméricos. Por exemplo, o namespace da tenancy acme-dev pode ser ansh81vru1zp. Observe que, para algumas tenancies mais antigas, a string do namespace pode ser igual ao nome da tenancy em todas as letras minúsculas (por exemplo, acme-dev). Para localizar o namespace da tenancy atual, abra o menu Perfil Ícone do menu Perfil e selecione Tenancy.

Você deve pertencer ao grupo de Administradores da tenancy ou ter recebido a permissão do REPOSITORY_MANAGE para:

  • criar um novo repositório público
  • alterar um repositório existente para um repositório público
  • alterar um repositório público existente para um repositório privado

Se tornar um repositório privado, você (junto com os usuários que pertencem ao grupo Administradores da tenancy) poderá executar qualquer operação no repositório. Você pode usar políticas de identidade para permitir que outros usuários executem outras operações em repositórios (públicos e privados) que você cria.

Em geral, antes de enviar qualquer imagem, você criará um repositório vazio em um compartimento e dará um nome ao repositório (por exemplo, project01/acme-web-app). Se você pertencer ao grupo Administradores da tenancy ou tiver recebido a permissão REPOSITORY_MANAGE, também poderá especificar se o repositório será privado ou público (consulte Políticas para Controlar o Acesso ao Repositório). Depois de criar o repositório, as imagens enviadas posteriormente para o Container Registry que incluem o nome do repositório são enviadas para esse repositório.

Por exemplo, para sua conveniência, talvez você queira agrupar várias versões de uma imagem na tenancy acme-dev na região Ashburn no repositório chamado project01/acme-web-app. Primeiro, você cria o repositório project01/acme-web-app. Em seguida, inclua o nome do repositório ao enviar a imagem, no formato <registry-domain>/<tenancy-namespace>/<repo-name>:<version>. Por exemplo, ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:4.6.3.

Observe que criar um repositório vazio antes de enviar uma imagem é quase certamente seu fluxo de trabalho normal. E se você só estiver autorizado a gerenciar repositórios em compartimentos e não no compartimento raiz da tenancy, sempre precisará criar um repositório antes de enviar uma imagem. No entanto, se você estiver na posição incomum da maioria com a intenção de enviar imagens para o compartimento raiz, a criação antecipada de um repositório vazio não será estritamente necessária. Para obter mais informações, consulte Criando um Repositório.

Resumo da terminologia

Ao trabalhar com repositórios no Container Registry, você achará útil ter uma compreensão clara dos termos a seguir e como eles se relacionam entre si.

caminho do repositório

Um caminho de repositório (às vezes chamado de <repo-path> nesta documentação) é o caminho totalmente qualificado para um repositório no Container Registry. Um caminho de repositório tem o formato <registry-domain>/<tenancy-namespace>/<repo-name>.

Por exemplo:

  • ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app
  • iad.ocir.io/ansh81vru1zp/project01/acme-web-app
  • us-phoenix-1.ocir.io/cbujx0t3wa3r/my-hello-app
domínio de registro

Um domínio de registro do Container Registry inclui uma chave ou um identificador de região do Container Registry. Um domínio de registro do Container Registry tem um dos seguintes formatos:

  • (recomendado) ocir.<region-identifier>.oci.oraclecloud.com
  • <region-key>.ocir.io (somente realms OC1)
  • <region-identifier>.ocir.io (somente realms OC1)

Por exemplo:

  • ocir.us-ashburn-1.oci.oraclecloud.com
  • iad.ocir.io/ansh81vru1zp
  • us-phoenix-1.ocir.io

Para obter a lista de identificadores de região e chaves de região, consulte Disponibilidade por Região.

identificador da região

Um identificador de região (às vezes chamado de <region-identifier> nesta documentação) identifica a região do Container Registry que você está usando.

Por exemplo:

  • us-ashburn-1
  • us-phoenix-1

Para obter a lista de identificadores de região, consulte Disponibilidade por Região.

chave da região

Uma chave de região (às vezes chamada de <region-key> nesta documentação) identifica a região do Container Registry que você está usando.

Por exemplo:

  • iad
  • phx

Para obter a lista de chaves de região, consulte Disponibilidade por Região.

namespace da tenancy

Um namespace da tenancy (às vezes chamado de <tenancy-namespace> nesta documentação) é uma string de caracteres alfanuméricos, automática, aleatória e imutável. Por exemplo, o namespace da tenancy acme-dev pode ser ansh81vru1zp.

Observe que, para algumas definições mais antigas, a string de namespace pode ser igual ao nome da tenancy, tudo em letra minúscula (por exemplo, acme-dev). Para localizar o namespace da tenancy atual, abra o menu Perfil Ícone do menu Perfil e selecione Tenancy. O namespace da tenancy é mostrado no campo Namespace do Serviço Object Storage.

nome do repositório

Um nome de repositório (às vezes chamado de <repo-name> nesta documentação) é o nome de um repositório no Container Registry, para e do qual você pode enviar e extrair imagens. Os nomes de repositório podem incluir um ou mais caracteres de barra e são exclusivos em todos os compartimentos de toda a tenancy.

Por exemplo:

  • project01/acme-web-app
  • project01/my-test-app
  • my-hello-app
  • project01/acme-web-app/component1
  • project01/acme-web-app/component2
  • project01/acme-web-app/component1/subcomponent1

Observe que, embora um nome de repositório possa incluir caracteres de barra, a barra não representa uma estrutura de diretório hierárquica. É simplesmente um caractere em uma string de caracteres. Como conveniência, você pode optar por iniciar os nomes de vários repositórios diferentes com a mesma string, talvez terminando em uma barra (como project01/). Essa string às vezes é chamada de "prefixo de nome do repositório". Mas um repositório chamado project01/acme-web-app não precisa ter nenhum relacionamento com um repositório chamado project01/my-test-app. Usar o mesmo prefixo de nome de repositório para alguns repositórios simplesmente facilita a organização e o controle do acesso a eles no Container Registry, que pode conter muitos outros repositórios.

identificador de registro

Um identificador de registro inclui um domínio de registro do Container Registry e um namespace de tenancy, no formato <registry-domain>/<tenancy-namespace>

Por exemplo:

  • ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp
  • iad.ocir.io/ansh81vru1zp/project01
  • us-phoenix-1.ocir.io/cbujx0t3wa3r
caminho da imagem

Um caminho de imagem é o caminho totalmente qualificado para uma determinada imagem em um registro. Ele estende o caminho do repositório adicionando o identificador de versão associado à imagem. Um caminho de imagem tem o formato <registry-domain>/<tenancy-namespace>/<repo-name>:<version>

Por exemplo:

  • ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:v2.0.test
  • iad.ocir.io/ansh81vru1zp/project01/acme-web-app:v2.0.test
  • us-phoenix-1.ocir.io/cbujx0t3wa3r/my-hello-app:latest
identificador da versão

Um identificador de versão (às vezes chamado de <version> nesta documentação) é uma string usada para fazer referência a uma versão de imagem específica em um repositório conhecido. Por exemplo:

  • 4.6.3
  • 4.6.4
  • v2.0.test
nome da imagem

O termo "nome da imagem" às vezes é usado como uma maneira curta de se referir a uma imagem específica em um repositório específico. Nesse contexto, um nome de imagem tem a estrutura:

<repo-name>:<version>

Por exemplo:

  • project01/acme-web-app:4.6.3
  • project01/acme-web-app:4.6.4
  • my-hello-app:latest