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
.
Registro | Exemplo de URL |
---|---|
Registro Docker de GitHub Package Registry | docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME |
Registro de contêiner do GitHub | ghcr.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.
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".
-
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 escoporepositório
ao criar o PAT. Adicionar um PAT com o escopo derepositó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 dorepositó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".
- Selecione o escopo
-
Salve seu PAT. Recomendamos salvar o seu PAT como uma variável de ambiente.
$ export CR_PAT=YOUR_TOKEN
-
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.
-
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
-
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 imagemoctoshift/octoshift
na organização octo-org.$ docker pull docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
-
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
-
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
- 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.
-
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". -
No seu arquivo de fluxo de trabalho do GitHub Actions, atualize a URL do pacote de
https://docker.pkg.github.com
paraghcr.io
. -
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, comoCR_PAT
. Para obter mais informações, consulte "Criar e armazenar segredos encriptados". -
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