Conteúdo
Tutorial de docker push: envie imagens para um Registry (--all-tags, docker login)
docker push envia imagens para um Registry. Em geral, primeiro use docker tag para definir o nome de destino. Veja Docker Hub para saber como usá-lo.
Sintaxe
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker push [OPTIONS] NAME[:TAG]
docker login [OPTIONS] [SERVER]
Parâmetros
| Parâmetro | Descrição |
|---|---|
-a, --all-tags | Envia todas as tags da imagem |
--platform string | Envia o manifest da plataforma especificada como uma imagem de plataforma única; não envia o image index, portanto outros manifests (incluindo attestations) não serão preservados. O formato é os[/arch[/variant]], por exemplo, linux/amd64 |
-q, --quiet | Oculta a saída detalhada |
-p, --password string | Senha ou Personal Access Token (PAT); use - para ler de stdin |
--password-stdin | Lê a senha ou o Personal Access Token (PAT) de stdin |
-u, --username string | Nome de usuário |
Se você não especificar um servidor em docker login, o Docker Hub será usado por padrão. O formato do nome de destino de docker tag é TARGET_IMAGE[:TAG].
Exemplo
O exemplo a seguir usa o Registry local localhost:5000 e marca alpine:3.23 no Repository tools/alpine.
Criar tags de destino
$ docker tag alpine:3.23 localhost:5000/tools/alpine:3.23
$ docker tag alpine:3.23 localhost:5000/tools/alpine:latest
$ docker images localhost:5000/tools/alpine
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
localhost:5000/tools/alpine:3.23 ff7f0c727dd7 26.6MB 8.21MB
localhost:5000/tools/alpine:latest ff7f0c727dd7 26.6MB 8.21MB
- As duas tags apontam para o mesmo ID de imagem.
- O nome de destino inclui o host e a porta do Registry, o Repository e cada tag.
Enviar uma tag e todas as tags
$ docker push localhost:5000/tools/alpine:3.23
The push refers to repository [localhost:5000/tools/alpine]
5e9b4a97f639: Unavailable
5e9b4a97f639: Pushed
3.23: digest: sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306 size: 1022
Info -> Not all multiplatform-content is present and only the available single-platform image was pushed
sha256:ff7f0c727dd796aa36787bfcd9a64bf35a6ce72a73451b3359fde849b6703d63 -> sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306
$ docker push localhost:5000/tools/alpine:latest
The push refers to repository [localhost:5000/tools/alpine]
5e9b4a97f639: Layer already exists
latest: digest: sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306 size: 1022
Info -> Not all multiplatform-content is present and only the available single-platform image was pushed
sha256:ff7f0c727dd796aa36787bfcd9a64bf35a6ce72a73451b3359fde849b6703d63 -> sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306
$ docker push --all-tags localhost:5000/tools/alpine
The push refers to repository [localhost:5000/tools/alpine]
5e9b4a97f639: Layer already exists
3.23: digest: sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306 size: 1022
5e9b4a97f639: Layer already exists
latest: digest: sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306 size: 1022
Info -> Not all multiplatform-content is present and only the available single-platform image was pushed
sha256:ff7f0c727dd796aa36787bfcd9a64bf35a6ce72a73451b3359fde849b6703d63 -> sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306
Info -> Not all multiplatform-content is present and only the available single-platform image was pushed
sha256:ff7f0c727dd796aa36787bfcd9a64bf35a6ce72a73451b3359fde849b6703d63 -> sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306
- O envio de uma única tag informa o digest. Ao enviar a mesma camada novamente, aparece
Layer already exists. --all-tagsenvia3.23elatestdetools/alpinede uma só vez.- Aviso
Info:alpine:3.23é uma imagem multiplataforma, mas apenas parte do conteúdo de plataformas está disponível localmente. Por isso, somente a plataforma única disponível no momento foi enviada (o digest mudou deff7f0c…para3d6794…, o da plataforma única). O envio foi bem-sucedido, mas essa tag no Registry contém apenas uma plataforma. Para enviar imagens multiplataforma, consulte Imagens multiplataforma.
Conferir as tags do Registry e identificar erros
$ wget -qO- http://localhost:5000/v2/tools/alpine/tags/list
{"name":"tools/alpine","tags":["3.23","latest"]}
$ docker push localhost:5000/tools/missing:1.0
The push refers to repository [localhost:5000/tools/missing]
tag does not exist: localhost:5000/tools/missing:1.0
$ docker push docker.io/library/alpine:3.23
The push refers to repository [docker.io/library/alpine]
5e9b4a97f639: Unavailable
5e9b4a97f639: Unavailable
5e9b4a97f639: Unavailable
5e9b4a97f639: Unavailable
5e9b4a97f639: Unavailable
5e9b4a97f639: Unavailable
5e9b4a97f639: Unavailable
5e9b4a97f639: Unavailable
5e9b4a97f639: Unavailable
5e9b4a97f639: Layer already exists
failed commit on ref "manifest-sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306": server message: insufficient_scope: authorization failed
- A lista de tags do Registry confirma que
3.23elatestexistem. Ao tentar enviar uma tag local inexistente, aparecetag does not exist. - Ao enviar para
docker.io/library/alpineno Docker Hub, aparece por fiminsufficient_scope: authorization failed:library/é o namespace de imagens oficiais, e ninguém pode enviar para ele. - Para enviar ao Docker Hub, execute
docker loginprimeiro (consulte os parâmetros na tabela acima) e marque a imagem com um nome da sua conta, por exemplo,sua-conta/alpine:3.23.
Capítulos relacionados
- Docker Hub: imagens e Repositories do Docker Hub
- Imagens: conferir imagens locais
- Imagens multiplataforma: plataformas e manifests
- Liberar espaço em disco: remover imagens não utilizadas
Exercícios
Exercício: marque a imagem local alpine:3.23 como localhost:5000/tools/alpine:latest e, em seguida, envie todas as tags de tools/alpine.
Resposta
docker tag alpine:3.23 localhost:5000/tools/alpine:latest
docker push --all-tags localhost:5000/tools/alpine
Perguntas frequentes
Por que adicionar uma tag de Registry antes de enviar uma imagem?
docker tag cria um nome de destino que aponta para a imagem de origem; o exemplo marca alpine:3.23 como localhost:5000/tools/alpine:3.23 e depois envia esse nome.
Quais tags docker push --all-tags envia?
Ele envia todas as tags do Repository especificado. No exemplo, 3.23 e latest de tools/alpine são enviadas.
O que fazer se aparecer insufficient_scope ao enviar para o Docker Hub?
Isso significa que você não tem permissão para enviar ao Repository. docker.io/library/alpine, no exemplo, pertence ao namespace de imagens oficiais do Docker, para o qual nenhuma conta pessoal pode enviar. Para enviar ao Docker Hub, execute docker login primeiro e marque a imagem como sua-conta/nome:tag. Consulte [Como enviar para o Docker Hub](/pt/docker/docker-hub/).
O aviso Info de plataforma única após um envio bem-sucedido indica uma falha?
O exemplo já informa o digest da tag e, em seguida, mostra que apenas a imagem de plataforma única disponível foi enviada. Esse é um aviso Info e não significa que o envio falhou.
Atualizado 26 de outubro de 2026