Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Fazer a migração para o GitHub Container Registry para imagens do Docker

Se você usou o Docker do GitHub Packages Docker Registry para armazenar imagens do Docker, você pode fazer a migração para o novo registro de contêiner.

GitHub Package Registry is available with GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 2.22, GitHub One, and GitHub AE.


O GitHub Package Registry não está disponível para repositórios privados de contas que utilizam planos antigos por-repositório. GitHub Package Registry está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud e GitHub One. Para obter mais informações, consulte "[produtos de GitHub](/articles/github-s-products)

Neste artigo

Principais diferenças entre Registro de contêiner do GitHub e o registro do pacote do Docker

Nota: Registro de contêiner do GitHub está atualmente em versão beta público e sujeito a alterações. Durante o beta, o armazenamento e a banda larga são grátis. Para usar Registro de contêiner do GitHub, você precisa habilitar a pré-visualização de recursos. Para obter mais informações, consulte "Sobre Registro de contêiner do GitHub" e "Habilitar melhor suporte ao contêiner".

O Registro de contêiner do GitHub substitui o registro do Docker de Pacotes existente e é otimizado para atender a algumas das necessidades únicas dos contêineres.

Com o registro do container, você pode:

  • Armazenar imagens de contêiner na sua conta de organização e usuário, em vez de um repositório.
  • Definir permissões e visibilidade refinadas e independentes das permissões e visibilidade do repositório.
  • Acessar imagens de contêineres públicos anonimamente.

Para obter mais informações, consulte "Sobre Registro de contêiner do GitHub."

Alterações de cobrança

Durante o beta de Registro de contêiner do GitHub, tanto o novo registro de contêiner quanto o registro do Docker de GitHub Package Registry existente será grátis. Para obter mais informações sobre o registro Docker do GitHub Package Registry, consulte "Configurar o Docker para uso com GitHub Package Registry".

Após o beta, as mesmas taxas de cobrança e armazenamento que os outros registros do GitHub Package Registry usam serão aplicadas ao registro do contêiner. Para obter mais informações, consulte "Sobre a cobrança para GitHub Package Registry".

Alterações de domínio

O domínio para o registro de contêiner é ghcr.io.

RegistroExemplo de URL
Registro Docker de GitHub Package Registrydocker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME
Registro de contêiner do GitHubghcr.io/OWNER/IMAGE_NAME

Efetuar a autenticação com o registro do contêiner

Observação: Antes de poder usar Registro de contêiner do GitHub, você deve habilitar o recurso para sua conta. Para obter mais informações, consulte "Habilitar suporte ao contêiner aprimorado".

Você deverá efetuar a autenticação no registro de contêiner com a URL de base ghcr.io. Recomendamos criar um novo token de acesso para usar o registro de contêiner.

Os PATs podem conceder amplo acesso à sua conta. You should select only the necessary read:packages, write:packages, or delete:packages scope when creating a PAT to authenticate to the registro de contêiner.

To authenticate to Registro de contêiner do GitHub within a GitHub Actions workflow, use the GITHUB_TOKEN for the best security and experience.

For guidance on updating your workflows that authenticate to ghcr.io with a personal access token, see "Upgrading a workflow that accesses ghcr.io."

Registro de contêiner do GitHub now supports GITHUB_TOKEN for easy and secure authentication in your workflows. If your workflow is using a personal access token (PAT) to authenticate to ghcr.io, then we highly recommend you update your workflow to use GITHUB_TOKEN.

For more information about GITHUB_TOKEN, see "Encrypted secrets" and "Authentication in a workflow."

Se você desejar usar o registro de contêiner em ações durante a versão beta, siga nossas práticas de segurança recomendadas para o uso do PAT emFortalecimento da segurança para o GitHub Actions".

  1. Crie um novo token de acesso pessoal (PAT) com os escopos apropriados para as tarefas que você deseja realizar. Se sua organização exigir SSO, você deverá habilitar o SSO para seu novo token.

    Note: By default, when you select the write:packages scope for your personal access token (PAT) in the user interface, the repo scope will also be selected. The repo scope offers unnecessary and broad access, which we recommend you avoid using for GitHub Actions workflows in particular. For more information, see "Security hardening for GitHub Actions." As a workaround, you can select just the write:packages scope for your PAT in the user interface with this url: https://github.com/settings/tokens/new?scopes=write:packages.

    • Selecione o escopo read:packages para fazer o download de imagens de contêineres e ler seus metadados.
    • Selecione o escopo write:packages para fazer o download e o upload de imagens de contêiner e ler e escrever seus metadados.
    • Selecione o escopo delete:packages para excluir imagens de contêineres.

    Para obter mais informações, consulte "Criar um token de acesso pessoal para a linha de comando".

  2. Salve seu PAT. Recomendamos salvar o seu PAT como uma variável de ambiente.

    $ export CR_PAT=YOUR_TOKEN
  3. Ao usar a CLI para seu tipo de container, faça login em serviço de Registro de contêiner do GitHub em ghcr.io.

    $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
      > Login Succeeded

Fazer a migração de uma imagem do Docker usando a CLI do Docker

Para mover imagens do Docker que você hospeda no registro do Docker do GitHub Package Registry, você deve republicar as imagens para registro de contêiner. Recomendamos republicar as imagens do Docker existentes usando a linha de comando na sua máquina local.

  1. Faça o login no registro do Docker usando um PAT temporário com pelo menos o escopo de read:packages. Este PAT só será usado para fazer o login no registro do Docker para puxar imagens e poderá ser excluído posteriormente.

    $ echo $READ_PACKAGES_TOKEN | docker login docker.pkg.github.com -u USERNAME --password-stdin
  2. Puxe para baixo a imagem que você gostaria de migrar, substituindo o PROPRIETÁRIO pelo nome do usuário ou conta de organização proprietária do repositório, REPOSITÓRIO pelo nome do repositório que contém seu projeto, IMAGE_NAME pelo o nome do pacote ou imagem, VERSÃO pela tag para a imagem que você deseja instalar. Por exemplo, docker pull docker.pkg.github.com/octo-org/octoshift/octoshift:latest move a tag mais recente da imagem octoshift/octoshift na organização octo-org.

    $ docker pull docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
  3. Remarque a imagem com o novo domínio e um novo nome de imagem. Para obter mais informações, consulte "Tag do Docker" na documentação Docker. Use a mesma URL que você usou na etapa anterior para a URL FONTE. Substitua TARGET_OWNER pelo usuário ou organização para o qual você está migrando a imagem do contêiner e substitua TARGET_IMAGE_NAME pelo novo nome de imagem de registro de contêiner.

    $ docker tag docker.pkg.github.com/SOURCE_OWNER/SOURCE_REPOSITORY/SOURCE_IMAGE_NAME:VERSION ghcr.io/TARGET_OWNER/TARGET_IMAGE_NAME:VERSION
  4. Fazer login no novo

registro de contêiner. Recomendamos criar um novo PAT limitado aos escopos read:packages e write: packages já que você não precisa mais do escopo repositório e seu PAT anterior pode não ter o escopo write:packages.

$ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
  1. Faça push da sua imagem re-etiquetada para o registro de contêiner.
    $ docker push ghcr.io/OWNER/IMAGE_NAME:VERSION

Atualizar o seu fluxo de trabalho de GitHub Actions

Observação: Antes de poder usar Registro de contêiner do GitHub, você deve habilitar o recurso para sua conta. Para obter mais informações, consulte "Habilitar suporte ao contêiner aprimorado".

Se tiver um fluxo de trabalho de GitHub Actions que usa uma imagem do Docker do registro Docker do GitHub Package Registry, você deverá atualizar seu fluxo de trabalho para registro de contêiner para permitir acesso anônimo para imagens públicas de contêiner, permissões de acesso refinado e melhor compatibilidade de armazenamento e largura de banda para contêineres.

  1. Migre as suas imagens do Docker para o novo registro de contêiner em ghcr.io. Por exemplo, consulte "Migrar uma imagem do Docker usando a CLI do Docker".

  2. No seu arquivo de fluxo de trabalho do GitHub Actions, atualize a URL do pacote de https://docker.pkg.github.com para ghcr.io.

  3. Adicione seu novo token de acesso de autenticação pessoal (PAT) de registro de contêiner como um segredo do GitHub Action. Registro de contêiner do GitHub não é compatível com o uso do GITHUB_TOKEN para o seu PAT. Portanto, você deve usar uma variável personalizada diferente, como CR_PAT. Para obter mais informações, consulte "Criar e armazenar segredos encriptados".

  4. No seu arquivo de fluxo de trabalho de GitHub Actions atualize a autenticação do PAT substituindo o seu PAT do registro do Docker (${{ secrets.GITHUB_TOKEN }}) por uma nova variável para o seu PAT de registro de contêiner, como, por exemplo, ${{ secrets.CR_PAT }}.

Exemplo de fluxo de trabalho atualizado

Se parte de seu fluxo de trabalho acessou uma imagem do Docker hospedada pelo registro Docker dessa forma:

echo ${{ secrets.GITHUB_TOKEN }} | docker login https://docker.pkg.github.com -u $GITHUB_ACTOR --password-stdin
docker pull docker.pkg.github.com/github/octoshift/octoshift:latest
docker build . --tag docker.pkg.github.com/github/octoshift/octoshift:$GITHUB_SHA --cache-from docker.pkg.github.com/github/octoshift/octoshift:latest
docker push docker.pkg.github.com/github/octoshift/octoshift:$GITHUB_SHA

Você deverá atualizar o seu fluxo de trabalho com a nova URL de registro de contêiner e PAT dessa forma:

# new login with new container registry url and PAT
echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
# new container registry urls added
docker pull ghcr.io/github/octoshift:latest
docker build . --tag ghcr.io/github/octoshift:$GITHUB_SHA --cache-from ghcr.io/github/octoshift:latest
docker push ghcr.io/github/octoshift:$GITHUB_SHA

Esse documento ajudou você?

Privacy policy

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.