Skip to main content

Trabalhando com o registro do Docker

Você pode fazer push e pull das imagens Docker usando o Docker de GitHub Packages

Note

Talvez esse tipo de pacote não esteja disponível para sua instância, pois os administradores do site podem habilitar ou desabilitar cada tipo de pacote compatível. Para obter mais informações, confira "Configurar o suporte ao ecossistema de pacote para sua empresa".

Sobre o suporte ao Docker

Ao instalar ou publicar uma imagem do Docker, o registro do Docker atualmente não é compatível com camadas externas como, por exemplo, as imagens do Windows.

Docker Engine v25 não é compatível com Docker Registry em GitHub Enterprise Server. Em vez disso, recomendamos o uso de Container registry. Para saber mais sobre migrações manuais, consulte Fazendo a migração para o Registro do Contêiner a partir do Registro Docker.

Autenticar-se no GitHub Packages

Note

O GitHub Packages dá suporte apenas à autenticação que usa um personal access token (classic). Para obter mais informações, confira "Gerenciar seus tokens de acesso pessoal".

Você precisa de um token de acesso para publicar, instalar e excluir pacotes privados, públicos e internos.

Você pode usar um personal access token (classic) para se autenticar no GitHub Packages ou na API do GitHub Enterprise Server. Ao criar um personal access token (classic), você pode atribuir diferentes escopos de token, dependendo da sua necessidade. Para obter mais informações sobre escopos relacionados a pacotes para personal access token (classic), confira "Sobre permissões para o GitHub Packages".

Para efetuar a autenticação em um registro do GitHub Packages dentro de um fluxo de trabalho de GitHub Actions, você pode utilizar:

  • GITHUB_TOKEN para publicar pacotes associados ao repositório do fluxo de trabalho.
  • um personal access token (classic) com pelo menos escopo read:packages para instalar pacotes associados a outros repositórios privados (que não podem ser acessados por GITHUB_TOKEN).

Para obter mais informações sobre o GITHUB_TOKEN usado em fluxos de trabalho do GitHub Actions, confira "Autenticação automática de token".

Autenticar com um personal access token

Você precisa usar um personal access token (classic) com os escopos apropriados para publicar e instalar pacotes no GitHub Packages. Para obter mais informações, confira "Introdução ao GitHub Packages".

Você pode se autenticar no GitHub Packages usando o comando de logon docker do Docker.

Para manter suas credenciais seguras, recomendamos que você salve seu personal access token em um arquivo local no computador e use o sinalizador --password-stdin do Docker, que lê o token por meio de um arquivo local.

Se a sua instância tiver o isolamento de subdomínio habilitado:

cat ~/TOKEN.txt | docker login docker.HOSTNAME -u USERNAME --password-stdin

Se a sua instância tiver o isolamento de subdomínio desabilitado:

cat ~/TOKEN.txt | docker login HOSTNAME -u USERNAME --password-stdin

Para usar este exemplo de comando de logon, substitua USERNAME pelo seu nome de usuário do GitHub Enterprise Server , HOSTNAME pela URL do sua instância do GitHub Enterprise Server e ~/TOKEN.txt pelo caminho do arquivo para o personal access token do GitHub Enterprise Server.

Para obter mais informações, confira Logon do Docker.

Publicar uma imagem

Note

O GitHub Packages Registro do Docker será substituído no futuro GitHub Enterprise Server pelo Container registry, que dá um suporte melhor ao contêiner. O

Note

Os nomes das imagens só devem usar letras minúsculas.

O GitHub Packages aceita várias imagens do Docker de nível superior por repositório. Um repositório pode ter qualquer número de tags de imagem. Você poderá conhecer uma publicação de serviço degradada ou instalar imagens do Docker com tamanho superior a 10 GB. As camadas são limitadas em 5 GB cada. Para obter mais informações, confira Marca do Docker na documentação do Docker.

Após publicar um pacote, você poderá visualizá-lo no GitHub. Para obter mais informações, confira "Visualizar pacotes".

  1. Determine o nome e a ID da imagem do Docker usando docker images.

    $ docker images
    > <&nbsp>
    > REPOSITORY        TAG        IMAGE ID       CREATED      SIZE
    > IMAGE_NAME        VERSION    IMAGE_ID       4 weeks ago  1.11MB
    
  2. Ao usar a ID de imagem do Docker, marque a imagem do Docker substituindo OWNER pelo nome da conta pessoal ou organização que é o proprietário do repositório, REPOSITORY pelo nome do repositório que contém o projeto, IMAGE_NAME pelo nome do pacote ou da imagem, HOSTNAME pelo nome do host dosua instância do GitHub Enterprise Server, e VERSION pela versão do pacote no momento do build.

Se a sua instância tiver o isolamento de subdomínio habilitado:

docker tag IMAGE_ID docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
Se a sua instância tiver o isolamento de subdomínio desabilitado:
docker tag IMAGE_ID HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
  1. Se você ainda não compilou uma imagem do Docker para o pacote, compile a imagem substituindo OWNER pelo nome da conta pessoal ou organização que é o proprietário do repositório, REPOSITORY pelo nome do repositório que contém o projeto, IMAGE_NAME pelo nome do pacote ou da imagem, VERSION pela versão do pacote no momento do build, HOSTNAME pelo nome do host do sua instância do GitHub Enterprise Server, e PATH pela imagem se não está no diretório de trabalho atual.

Se a sua instância tiver o isolamento de subdomínio habilitado:

docker build -t docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
Se a sua instância tiver o isolamento de subdomínio desabilitado:
docker build -t HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
  1. Publicar a imagem no GitHub Packages.

Se a sua instância tiver o isolamento de subdomínio habilitado:

docker push docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
Se a sua instância tiver o isolamento de subdomínio desabilitado:
docker push HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION

Note

Efetue push da imagem usando IMAGE_NAME:VERSION, e não IMAGE_NAME:SHA.

Exemplo de publicação de uma imagem do Docker

Esses exemplos pressupõem que a sua instância tenha o isolamento de subdomínio habilitado.

Você pode publicar a versão 1.0 da imagem monalisa no repositório octocat/octo-app usando uma ID de imagem.

$ docker images

> REPOSITORY           TAG      IMAGE ID      CREATED      SIZE
> monalisa             1.0      c75bebcdd211  4 weeks ago  1.11MB

# Tag the image with OWNER/REPO/IMAGE_NAME
$ docker tag c75bebcdd211 docker.HOSTNAME/octocat/octo-app/monalisa:1.0

# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0

Você pode publicar uma nova imagem do Docker pela primeira vez e dar a ela o nome monalisa.

# Build the image with docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
# Assumes Dockerfile resides in the current working directory (.)
$ docker build -t docker.HOSTNAME/octocat/octo-app/monalisa:1.0 .

# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0

Baixando uma imagem

Note

O GitHub Packages Registro do Docker será substituído no futuro GitHub Enterprise Server pelo Container registry, que dá um suporte melhor ao contêiner. O

Use o comando docker pull para instalar uma imagem do Docker por meio do GitHub Packages, substituindo OWNER pelo nome da conta pessoal ou organização que é o proprietário do repositório, REPOSITORY pelo nome do repositório que contém o projeto, IMAGE_NAME pelo nome do pacote ou da imagem, HOSTNAME pelo nome do host do sua instância do GitHub Enterprise Server e TAG_NAME pela marca da imagem que deseja instalar.

Se a sua instância tiver o isolamento de subdomínio habilitado:

docker pull docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME

Se a sua instância tiver o isolamento de subdomínio desabilitado:

docker pull HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME

Note

Efetue pull da imagem usando IMAGE_NAME:VERSION, e não IMAGE_NAME:SHA.

Leitura adicional