Permitir que seu codespace acesse um registro de imagens privadas

Você pode usar segredos para permitir que Codespaces acesse um registro de imagens privada

Codespaces is available for organizations using GitHub Team or GitHub Enterprise Cloud. Para obter mais informações, consulte os "produtos do GitHub".

Sobre registros de imagens privadas e Codespaces

Um registro é um espaço seguro para armazenar, gerenciar e buscar imagens privadas de contêineres. Você pode usar um para armazenar um ou mais devcontainers. Existem muitos exemplos de registros, como GitHub registro do contêiner, registro de contêiner do Azure ou DockerHub.

O registro do contêiner de GitHub pode ser configurado para puxar imagens container sem precisar fornecer qualquer credencial para Codespaces. Para outros registros de imagem, você deve criar segredos em GitHub para armazenar os detalhes de acesso, o que permitirá que Codespaces acesse imagens armazenadas nesse registro.

Acessando imagens armazenadas no registro do contêiner de GitHub

O registro de contêiner de GitHub é a maneira mais fácil de GitHub Codespaces de consumir imagens de contêiner de desenvolvimento.

Para obter mais informações, consulte "Trabalhando com o registro do contêiner".

Acessar uma imagem publicada no mesmo repositório que o codespace

Se você publicar uma imagem de contêiner do GitHub no mesmo repositório em que o codespace está sendo lançado, você poderá de buscar automaticamente essa imagem na criação de um codespace. Você não terá que fornecer qualquer credencial adicional, a menos a opção Herdar acesso do repositório tenha sido desmarcada quando a imagem do contêiner foi publicada.

Herdando acesso a partir do repositório no qual uma imagem foi publicada

Por padrão, quando você publica uma imagem de contêiner no registro do contêiner de GitHub, a imagem herda a configuração de acesso do repositório no qual a imagem foi publicada. Por exemplo, se o repositório for público, a imagem também é pública. Se o repositório for privado, a imagem também é privada, mas pode ser acessada a partir do repositório.

Este comportamento é controlado pela opção de Herdar acesso do repositório. O Acesso herdado do repo é selecionado por padrão ao publicar GitHub Actions, mas não ao publicar diretamente no registro do contêiner de GitHub usando um Token de Acesso Pessoal (PAT).

Se a opção Herdar acesso do repositório não foi selecionada quando a imagem foi publicada, você pode adicionar o repositório manualmente aos controles de acesso da imagem de contêiner. Para obter mais informações, consulte "Configurar o controle de acesso e visibilidade de um pacote".

Ao acessar uma imagem publicada na organização, um codespace será lançado em

Se você deseja que uma imagem de contêiner possa ser acessada por todos os codespaces em uma organização, recomendamos que você publique a imagem do contêiner com visibilidade interna. Isso tornará a imagem visível automaticamente para todos os códigos dentro da organização, a menos que o repositório no qual o código é iniciado seja público.

Se o codespace for lançado a partir de um repositório público que faz referência uma imagem interna ou privada, você deverá permitir manualmente o acesso do repositório público à imagem interna do contêiner. Isto impede que a imagem interna seja acidentalmente divulgada publicamente. Para obter mais informações, consulte "Garantir o acesso dos codespaces para o seu pacote".

Acessar um contêiner privado a partir de um subconjunto de repositórios em uma organização

Se você deseja permitir que um subconjunto de repositórios de uma organização acesse uma imagem de contêiner ou permitir que uma imagem interna ou privada seja acessada a partir de um codespace lançado em um repositório público, você pode adicionar repositórios manualmente às configurações de acesso da imagem de um container. Para obter mais informações, consulte "Garantindo o acesso de codespaces de segurança ao seu pacote."

Publicando uma imagem de contêiner a partir de um codespace

O acesso seguro a partir de um codespace para o registro de um contêiner de GitHub é limitado à extração de imagens de contêineres. Se você deseja publicar a imagem de um contêiner de dentro de um codespace, você deve usar um token de acesso pessoal (PAT) com o escopo write:packages.

Recomendamos publicar imagens via GitHub Actions. Para obter mais informações, consulte "Publicar imagens Docker".

Acessando as imagens armazenadas em outros registros de contêiner

Se você estiver acessando um contêiner a partir de um registro que não é registro de contêiner de GitHub, Codespaces irá verificar a presença de três segredos, que define o nome de servidor, nome de usuário, e token de acesso pessoal (PAT) para um registro de contêiner. Se estes segredos forem encontrados, Codespaces disponibilizará o registro dentro do seu codespace.

  • <*>_CONTAINER_REGISTRY_SERVER
  • <*>_CONTAINER_REGISTRY_USER
  • <*>_CONTAINER_REGISTRY_PASSWORD

É possível armazenar segredos a nível do usuário, repositório ou organização, permitindo que você os compartilhe de forma segura entre diferentes codespaces. Ao criar um conjunto de segredos para um registro de imagem privado, você deverá substituir o "<*>" no nome por um identificador consistente. Para mais informações, consulte "Gerenciar segredos criptografados para seus códigos" e "Gerenciar segredos criptografados para seu repositório e organização para os codespaces".

Se você estiver definindo os segredos no nível do usuário ou da organização. certifique-se de atribuir esses segredos para o repositório no qual você irá criar o codespace, escolhendo uma política de acesso na lista suspensa.

Exemplo de segredo do registro de imagem

Exemplos de segredos

Para uma lista de imagens privadas no Azure, você pode criar os seguintes segredos:

ACR_CONTAINER_REGISTRY_SERVER = mycompany.azurecr.io
ACR_CONTAINER_REGISTRY_USER = acr-user-here
ACR_CONTAINER_REGISTRY_PASSWORD = <PAT>

Para obter informações sobre registros de imagens comuns, consulte "Servidores de registro de imagens comuns".

Exemplo de segredo do registro de imagem

Após adicionar os segredos, pode ser que você precise parar e, em seguida, iniciar o processo de codespace para que as novas variáveis de ambiente sejam passadas para o contêiner. Para obter mais informações, consulte "Suspender ou interromper um codespace".

Servidores de registro de imagens comuns

Alguns dos servidores comuns de registro de imagens estão listados abaixo:

Acessando o AWS Elastic Container Registry

Se você deseja acessar AWS Elastic Container Registry (ECR), você deverá fornecer um token de autorização AWS no ECR_CONTAINER_REGISTRY_PASSWORD. Este token de autorização não é o mesmo que a chave do seu segredo. Você pode obter um token de autorização do AWS usando as APIs ou CLI do AWS. Estes tokens têm uma vida útil curta e devem ser atualizados periodicamente. Para obter mais informações, consulte a"documentação de autenticação de registro privado do ECR do AWS".

Esse documento ajudou você?

Política de Privacidade

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.