Skip to main content

Trabalhando com o registro do Contêiner

Você pode armazenar e gerenciar imagens do Docker e OCI no Container registry, que usa o namespace do pacote 'https://ghcr.io'.

GitHub Package Registry is available with GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 3.0 or higher, 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. Além disso, as contas que usam os planos de legado por repositório não podem acessar o Container registry já que essas contas são cobradas por repositório. Para obter mais informações, consulte os "[produtos do GitHub](/get-started/learning-about-github/githubs-products)".

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 efetuar a autenticação em Container registry dentro de um fluxo de trabalho GitHub Actions, use o GITHUB_TOKEN para obter a melhor segurança e experiência. 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 the GITHUB_TOKEN.

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

Para obter mais informações sobre o GITHUB_TOKEN, consulte "Autenticação em um fluxo de trabalho".

Se você estiver usando Container registry em ações, siga nossas práticas recomendadas em matéria de segurança naEnrijecimento de 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: Por padrão, quando você selecionar o escopo write: pacotes para o seu token de acesso pessoal (PAT) na interface do usuário. O escopo do repositório também será selecionado. O escopo de repo oferece acesso desnecessário e amplo, o qual recomendamos que você evite usar para fluxos de trabalho do GitHub Actions em particular. Para obter mais informações, consulte "Enrijecimento de segurança para o 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 Container registry service at ghcr.io.

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

Fazer push das imagens do contêiner

This example pushes the latest version of IMAGE_NAME.

$ docker push ghcr.io/OWNER/IMAGE_NAME:latest

Este exemplo faz 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 as permissões de acesso, consulte "Configurar controle de acesso e visibilidade de um pacote".

Fazer pull das imagens de contêiner

Pull por resumo

Para garantir que você esteja sempre usando a mesma imagem, você pode especificar a versão exata da imagem de contêiner que você deseja fazer pull pelo valor do SHA do resumo.

  1. Para encontrar o valor do SHA do resumo, use docker inspect or docker pull e copie o valor de SHA após Digest:

    $ docker inspect ghcr.io/OWNER/IMAGE_NAME
  2. Remova a imagem localmente, conforme necessário.

    $ docker rmi  ghcr.io/OWNER/IMAGE_NAME:latest
  3. Faça pull da imagem do 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 de CLI do Docker mostrando uma imagem extraída pelo seu nome e a 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 cria a imagem hello_docker:

$ docker build -t hello_docker .

Marcar imagens de contêiner

  1. 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
  2. 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