Sobre o Container registry
O Container registry armazena imagens de contêiner na sua conta pessoal ou de organização e permite que você associe uma imagem a um repositório. Você pode escolher se deve herdar permissões de um repositório ou definir permissões granulares, independentemente de um repositório. Você também pode acessar imagens de contêiner público anonimamente.
Sobre o suporte de Container registry
O Container registry é atualmente compatível com os seguintes formatos de imagem do contêiner:
Ao instalar ou publicar uma imagem Docker, a Container registry é compatível com as camadas estrangeiras, como imagens do Windows.
Efetuar a autenticação no Container registry
Para se autenticar no Container registry (ghcr.io
) dentro de um fluxo de trabalho deGitHub Actions, use GITHUB_TOKEN
para a melhor segurança e experiência. Para registros que oferecem suporte a permissões granulares, se o seu fluxo de trabalho estiver usando um personal access token para autenticar em um registro, recomendamos fortemente que você atualize seu fluxo de trabalho para usar GITHUB_TOKEN
. Para obter diretrizes sobre como atualizar seus fluxos de trabalho que se autenticam em um registro com um personal access token, confira "Como fazer upgrade de um fluxo de trabalho que acessa um registro usando um personal access token".
Para obter mais informações sobre o GITHUB_TOKEN
, confira "Autenticação em um fluxo de trabalho". Para obter mais informações sobre as melhores práticas ao usar um registro em ações, confira "Proteção de segurança para GitHub Actions".
O GitHub Packages dá suporte apenas à autenticação que usa um personal access token (classic). Para obter mais informações, confira "Como criar um personal access token".
-
Crie um personal access token (classic) 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: por padrão, quando você selecionar o escopo
write:packages
do personal access token (classic) na interface do usuário, o escoporepo
também será selecionado. O escoporepo
oferece acesso desnecessário e amplo, o qual, em particular, recomendamos que você evite usar para fluxos de trabalho do GitHub Actions. Para obter mais informações, confira "Proteção de segurança do GitHub Actions". Como solução alternativa, você pode selecionar apenas o escopowrite:packages
do personal access token (classic) na interface do usuário com esta URL:https://github.com/settings/tokens/new?scopes=write:packages
.- Selecione o escopo
read:packages
para baixar imagens de contêiner e ler os metadados dela. - Selecione o escopo
write:packages
para baixar e carregar imagens de contêiner e ler e gravar os metadados dela. - Selecione o escopo
delete:packages
para excluir imagens de contêiner.
Para obter mais informações, confira "Como criar um personal access token para a linha de comando".
- Selecione o escopo
-
Salve o seu personal access token (classic). Recomendamos salvar o seu token como uma variável de ambiente.
$ export CR_PAT=YOUR_TOKEN
-
Usando a CLI para o tipo de contêiner, entre no serviço do Container registry em
ghcr.io
.$ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin > Login Succeeded
Fazer push das imagens do contêiner
Este exemplo efetua push da última versão de IMAGE_NAME
.
$ docker push ghcr.io/OWNER/IMAGE_NAME:latest
Este exemplo efetua push da versão 2.5
da imagem.
$ docker push ghcr.io/OWNER/IMAGE_NAME:2.5
Ao publicar um pacote pela primeira vez a visibilidade-padrão será privada. Para alterar a visibilidade ou definir permissões de acesso, confira "Como configurar o controle de acesso e a visibilidade de um pacote".
Fazer pull das imagens de contêiner
Pull por resumo
Para garantir que você esteja sempre usando a mesma imagem, especifique a versão exata da imagem de contêiner da qual deseja efetuar pull pelo valor do SHA de digest
.
-
Para localizar o valor do SHA de resumo, use
docker inspect
oudocker pull
e copie o valor do SHA apósDigest:
$ docker inspect ghcr.io/OWNER/IMAGE_NAME
-
Remova a imagem localmente, conforme necessário.
$ docker rmi ghcr.io/OWNER/IMAGE_NAME:latest
-
Efetue pull da imagem de contêiner com
@YOUR_SHA_VALUE
após o nome da imagem.$ docker pull ghcr.io/OWNER/IMAGE_NAME@sha256:82jf9a84u29hiasldj289498uhois8498hjs29hkuhs
Pull por nome
$ docker pull ghcr.io/OWNER/IMAGE_NAME
Pull por nome e versão
Exemplo da CLI do Docker que mostra uma imagem extraída pelo nome e pela tag de versão 1.14.1
:
$ docker pull ghcr.io/OWNER/IMAGE_NAME:1.14.1
> 5e35bd43cf78: Pull complete
> 0c48c2209aab: Pull complete
> fd45dd1aad5a: Pull complete
> db6eb50c2d36: Pull complete
> Digest: sha256:ae3b135f133155b3824d8b1f62959ff8a72e9cf9e884d88db7895d8544010d8e
> Status: Downloaded newer image for ghcr.io/orgname/image-name/release:1.14.1
> ghcr.io/orgname/image-name/release:1.14.1
Pull por nome e última versão
$ docker pull ghcr.io/OWNER/IMAGE_NAME:latest
> latest: Pulling from user/image-name
> Digest: sha256:b3d3e366b55f9a54599220198b3db5da8f53592acbbb7dc7e4e9878762fc5344
> Status: Downloaded newer image for ghcr.io/user/image-name:latest
> ghcr.io/user/image-name:latest
Criar imagens de contêiner
Este exemplo compila a imagem hello_docker
:
$ docker build -t hello_docker .
Marcar imagens de contêiner
-
Encontre o ID da imagem do Docker que você deseja marcar.
$ docker images > REPOSITORY TAG IMAGE ID CREATED SIZE > ghcr.io/my-org/hello_docker latest 38f737a91f39 47 hours ago 91.7MB > ghcr.io/my-username/hello_docker latest 38f737a91f39 47 hours ago 91.7MB > hello-world latest fce289e99eb9 16 months ago 1.84kB
-
Marque a sua imagem do Docker usando o ID da imagem, o nome da imagem desejada e a hospedagem de destino.
$ docker tag 38f737a91f39 ghcr.io/OWNER/NEW_IMAGE_NAME:latest