Para enviar uma imagem Docker para o Docker Hub, siga estas etapas:
1. Login no Docker Hub
Antes de enviar uma imagem, você precisa estar logado na sua conta do Docker Hub. Use o comando:
docker login
Digite seu nome de usuário e senha do Docker Hub quando solicitado.
2. Taggear a Imagem (Se Necessário)
Se a imagem ainda não estiver corretamente nomeada para o Docker Hub, você precisa taggeá-la usando o comando docker tag. A tag deve seguir o formato <seu_usuario>/<nome_imagem>:<tag>.
Exemplo:
docker tag minha_imagem:latest meu_usuario/minha_imagem:v1.0
3. Enviar a Imagem para o Docker Hub
Use o comando docker push para enviar a imagem ao Docker Hub:
docker push meu_usuario/minha_imagem:v1.0
Este comando faz o upload da imagem para o repositório especificado no Docker Hub.
4. Verificar no Docker Hub
Depois de fazer o push, você pode verificar o upload acessando a sua conta no Docker Hub. A imagem deve aparecer no seu repositório com a tag especificada.
Exemplo Completo
Suponha que você tenha uma imagem chamada minha_imagem com a tag latest. Aqui está como você faria para enviar essa imagem para o Docker Hub:
Login:
docker login
Taggear a Imagem:
docker tag minha_imagem:latest meu_usuario/minha_imagem:v1.0
Push da Imagem:
docker push meu_usuario/minha_imagem:v1.0
Agora, a imagem minha_imagem com a tag v1.0 estará disponível no repositório meu_usuario no Docker Hub.
Laboratório
$ docker login
Log in with your Docker ID or email address to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
You can log in with your password or a Personal Access Token (PAT). Using a limited-scope PAT grants better security and is required for organizations using SSO. Learn more at https://docs.docker.com/go/access-tokens/
Username: marcelodpbarbieri
Password:
WARNING! Your password will be stored unencrypted in /home/marcelo/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores
Login Succeeded
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
conversao-temperatura-dockerfile latest 4c32eaa602c1 8 hours ago 381MB
marcelodpbarbieri/conversao-temperatura latest 4c32eaa602c1 8 hours ago 381MB
marcelodpbarbieri/conversao-temperatura v1 4c32eaa602c1 8 hours ago 381MB
$ docker push marcelodpbarbieri/conversao-temperatura:v1
The push refers to repository [docker.io/marcelodpbarbieri/conversao-temperatura]
ec47f2dc5d8d: Pushed
145616ebd160: Pushed
7632a40242b4: Pushed
885d5f967c01: Pushed
f36fd4bb7334: Mounted from library/ubuntu
v1: digest: sha256:1fa5eb0aecb5e46bc7ed3e01f3ee9e3c8fb7336f9fea64b8839690825d1fa11b size: 1369
Para a imagem base ubuntu foi utilizada uma camada existente no Docker Hub otimizando assim a imagem enviada
$ docker image rm -f $(docker image ls -q)
$ docker system prune
$ docker container ls -la
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
$ docker pull marcelodpbar
bieri/conversao-temperatura:v1
v1: Pulling from marcelodpbarbieri/conversao-temperatura
31e907dcc94a: Pull complete
2b84bdeb597a: Pull complete
f0392a7398c4: Pull complete
f41b53d4e76c: Pull complete
8dadaaf7622a: Pull complete
Digest: sha256:1fa5eb0aecb5e46bc7ed3e01f3ee9e3c8fb7336f9fea64b8839690825d1fa11b
Status: Downloaded newer image for marcelodpbarbieri/conversao-temperatura:v1
docker.io/marcelodpbarbieri/conversao-temperatura:v1
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
marcelodpbarbieri/conversao-temperatura v1 4c32eaa602c1 11 hours ago 381MB
$ docker container run -d -p 8080:8080 marcelodpbarbieri/conversao-temperatura:latest
Unable to find image 'marcelodpbarbieri/conversao-temperatura:latest' locally
latest: Pulling from marcelodpbarbieri/conversao-temperatura
Digest: sha256:1fa5eb0aecb5e46bc7ed3e01f3ee9e3c8fb7336f9fea64b8839690825d1fa11b
Status: Downloaded newer image for marcelodpbarbieri/conversao-temperatura:latest
6b687bed62f53d346757cf4bcd1d9e4a3a87bf96dab8c649d7d30f8eccde7b54
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b687bed62f5 marcelodpbarbieri/conversao-temperatura:latest "node server.js" 13 seconds ago Up 12 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp vigilant_ellis
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
marcelodpbarbieri/conversao-temperatura latest 4c32eaa602c1 11 hours ago 381MB
marcelodpbarbieri/conversao-temperatura v1 4c32eaa602c1 11 hours ago 381MB