Observação: Container registry está atualmente em beta para GitHub Enterprise Server e sujeito a alterações.
Both GitHub Package Registry and subdomain isolation must be enabled to use Container registry. Para obter mais informações, consulte "Trabalhando com o registro do contêiner."
Sobre o Container registry
The Container registry stores container images within your organization or personal account, and allows you to associate an image with a repository. You can choose whether to inherit permissions from a repository, or set granular permissions independently of a repository. You can also access public container images anonymously.
To use the Container registry on GitHub Enterprise Server, your site administrator must first configure GitHub Package Registry for your instance and enable subdomain isolation. Para obter mais informações, consulte "Primeiros passos com o GitHub Packages para sua empresa" e "Habilitando o isolamento do subdomínio".
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 containers.HOSTNAME
, then we highly recommend you update your workflow to use the GITHUB_TOKEN
.
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".
Certifique-se de substituir o HOSTNAME
pelo nome do host sua instância do GitHub Enterprise Server ou endereço IP nos exemplos abaixo.
-
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 dorepositório
também será selecionado. O escopo derepo
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 thewrite:packages
scope for your PAT in the user interface with this url:https://HOSTNAME/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".
- 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 Container registry service at
containers.HOSTNAME
.$ echo $CR_PAT | docker login containers.HOSTNAME -u USERNAME --password-stdin > Login Succeeded
Fazer push das imagens do contêiner
Este exemplo faz push da versão mais recente de IMAGE-NAME
.
$ docker push containers.HOSTNAME/OWNER/IMAGE_NAME:latest
Este exemplo faz push da versão 2.5
da imagem.
$ docker push containers.HOSTNAME/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
.
-
Para encontrar o valor do SHA do resumo, use
docker inspect
ordocker pull
e copie o valor de SHA apósDigest:
$ docker inspect containers.HOSTNAME/OWNER/IMAGE_NAME
-
Remova a imagem localmente, conforme necessário.
$ docker rmi containers.HOSTNAME/OWNER/IMAGE_NAME:latest
-
Faça pull da imagem do contêiner com
@YOUR_SHA_VALUE
após o nome da imagem.$ docker pull containers.HOSTNAME/OWNER/IMAGE_NAME@sha256:82jf9a84u29hiasldj289498uhois8498hjs29hkuhs
Pull por nome
$ docker pull containers.HOSTNAME/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 containers.HOSTNAME/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 containers.HOSTNAME/orgname/image-name/release:1.14.1
> containers.HOSTNAME/orgname/image-name/release:1.14.1
Pull por nome e última versão
$ docker pull containers.HOSTNAME/OWNER/IMAGE_NAME:latest
> latest: Pulling from user/image-name
> Digest: sha256:b3d3e366b55f9a54599220198b3db5da8f53592acbbb7dc7e4e9878762fc5344
> Status: Downloaded newer image for containers.HOSTNAME/user/image-name:latest
> containers.HOSTNAME/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
-
Encontre o ID da imagem do Docker que você deseja marcar.
$ docker images > REPOSITORY TAG IMAGE ID CREATED SIZE > containers.HOSTNAME/my-org/hello_docker latest 38f737a91f39 47 hours ago 91.7MB > containers.HOSTNAME/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 containers.HOSTNAME/OWNER/NEW_IMAGE_NAME:latest