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 está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 2.22, e GitHub One.


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

Esse documento ajudou você?

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.

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. Atualmente, Registro de contêiner do GitHub é compatível apenas com formatos de imagem do Docker. Durante o beta, o armazenamento e a largura de banda são grátis. Para obter mais informações, consulte "Sobre Registro de contêiner do GitHub."

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

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.

Se você deseja efetuar a autenticação em Registro de contêiner do GitHub em um fluxo de trabalho de GitHub Actions, em seguida, você deverá usar um token de acesso pessoal (PAT). Atualmente, o GITHUB_TOKEN não tem as permissões necessárias. No beta de Registro de contêiner do GitHub, a única forma compatível de de autenticação é o PAT.

Os PATs podem conceder amplo acesso à sua conta. Recomendamos selecionar apenas o acesso de leitura ou gravação ou excluir o pacote ao criar um PAT para efetuar a autenticação no registro de contêiner. Evite incluir o escopo do repositório em um PAT usado por um fluxo de trabalho do GitHub Actions pois ele concede acesso adicional desnecessário.

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.

    Observação: Se você selecionar o escopo write:packages, desmarque o escopo repositório ao criar o PAT. Adicionar um PAT com o escopo de repositório como um segredo no repositório permite que a credencial seja acessível a todos os colaboradores do repositório. Isso fornece um acesso adicional desnecessário quando um PAT com o escopo do repositório é usado em uma ação. Para obter mais informações sobre as práticas de segurança recomendadas para ações, consulte "Fortalecimento de segurança para o GitHub Actions".

    • 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

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. Add your new registro de contêiner authentication personal access token (PAT) as a GitHub Actions secret. 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ê?

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.