O Que É o GHCR? GitHub Container Registry Explicado
O GHCR (ghcr.io) é o registry de containers do GitHub - as imagens vivem ao lado dos seus repos e herdam o modelo de identidade e permissões do GitHub.
O GitHub Container Registry armazena imagens de container sob ghcr.io/<owner>/<image>. Seu apelo é a integração estreita com o GitHub: as mesmas contas, times e tokens que governam seu código governam suas imagens, e o GitHub Actions pode fazer push para ele com um token embutido.
Como as referências se parecem
Uma imagem é nomeada ghcr.io/acme/web:1.4, onde acme é o usuário ou organização. A visibilidade (pública ou privada) e o acesso são controlados através das configurações de packages do GitHub, vinculadas ao repositório ou org proprietário.
Autenticação
Você faz login com um token: um personal access token, ou no Actions o GITHUB_TOKEN fornecido automaticamente. Os escopos de package do token determinam se você pode fazer pull, push ou delete.
Integração com Actions
Em um workflow você faz login com docker/login-action usando ${{ secrets.GITHUB_TOKEN }}, depois faz build e push. Como o token é escopado ao repo em execução, nenhum gerenciamento extra de secret é necessário para pushes no mesmo repo.
GHCR vs Docker Hub
- GHCR atrela o acesso às identidades e times do GitHub.
- Sem rate limits separados do Docker Hub para gerenciar.
- Packages vinculam ao repo de origem para proveniência.
GHCR em CI
Um pipeline comum constrói uma imagem e faz push dela para o GHCR para os passos de deploy fazerem pull. Como em qualquer registry, os pushes podem sofrer erros transitórios; runners gerenciados fazem retry automático deles para que um upload instável não quebre a run.
Principais conclusões
- GHCR é o registry do GitHub em ghcr.io, governado pelas identidades do GitHub.
- Actions pode fazer push usando o GITHUB_TOKEN embutido escopado ao repo.
- Ele evita os rate limits do Docker Hub e vincula imagens ao seu repo de origem.