Docker — Dockerhub, pull e push nas suas imagens

Victor Hugo Rocha
Training Center
Published in
6 min readApr 1, 2017

Olá, DevZ.

Você está aprendendo a fazer algo muito legal ao criar a sua própria imagem, que tal compartilhar com as outras pessoas o que você está fazendo? Isso pode ser bem útil para você no futuro e é assim que comunidades fortes são estabelecidas. É pra isso que existe o Dockerhub.

O que é Dockerhub?

Dockerhub é um Serviço de Web Hosting compartilhado para imagens Docker. No capítulo anterior você leu um pouco sobre imagens oficiais e não-oficiais, é no Dockerhub que os Dockerfiles são disponibilizadas para a comunidade. imagens oficiais são disponibilizadas por grandes grupos para facilitar o seu trabalho na hora de criar uma infraestrutura Docker.

Por exemplo: Ao necessitar de um container com um sistema de gerenciamento de Banco de Dados e montar você uma imagem, o que demandaria certo tempo, você pode usar a imagem oficial do MySQL que é mantido pela própria Docker em parceria com grandes empresas.

Diversas outras tecnologias também possuem imagens oficiais disponíveis na plataforma, como:

  1. Python
  2. Node
  3. WordPress
  4. Nginx

Você pode explorar a lista completa por sua conta.

Criando sua conta e um repositório

Agora que você está interessado, vamos criar uma conta na plataforma. Esse processso só pode ser feito através do navegador na página de inscrição do Dockerhub, ou seja, ainda não é possível criar uma conta pelo terminal.

Ao acessar o endereço você deve inserir um novo ID do Docker, (nome de usuário), um endereço de e-mail e uma senha. O navegador irá mostrar uma tela de Welcome to Docker Hub. Após o cadastro, entre na conta informada e procure o e-mail intitulado Please confirm email for your Docker ID, caso não encontre, não esqueça de checar a sua caixa de spam.

Abra o e-mail e clique em Confirm Your Email, o navegador irá abrir o Dockerhub e redirecionar você para o seu perfil. Nessa página clique em Create Repository e preencha um pequeno formulário com o nome do repositório e uma breve descrição, certifique-se de que o repositório esteja como público para que outras pessoas possam visualizar a sua imagem.

A conta gratuita possui direito a um repositório privado. Há planos para que mais repositórios privados fiquem disponveis, geralmente voltado para empresas que usam Docker em sua infraestrutura.

Como enviar sua imagem para o Dockerhub

Agora que você já tem a sua conta e criou um repositório vamos enviar a sua imagem para o repositório. Se esse conceito ainda não está claro para você, tente fazer um paralelo com enviar um projeto para o Github utilizando o Git, pois é isso que vamos fazer agora. Ao utilizar o comando docker images você verá todas as imagens armazenadas localmente na sua máquina. Vamos imaginar que queremos subir a nossa imagem docker-is-cool para o repositório que acabamos de criar pelo navegador.


REPOSITORY TAG IMAGE ID CREATED SIZE
docker-is-cool latest 8d9495d05463 38 minutes ago 193.4 MB
ambientum/node 6 cee61c8e3d01 2 weeks ago 346 MB
nginx stable-alpine f94d6dd9b576 3 weeks ago 54 MB

Ao utilizar o comando docker images seu resultado será similar ao acima.

Taggeando a sua imagem

Antes de enviarmos nossa imagem para a nuvem precisamos taggea-la com o comando docker tag. Como vimos acima na coluna REPOSITORY a imagem docker-is-cool não mostra quem a criou em seu nome. Você precisa do comando docker tag para associar a imagem a sua conta Dockerhub incluindo um namespace antes do nome da imagem. O comando será semelhante ao abaixo.

Funciona da seguinte maneira: Usamos o comando docker tag e passamos como parâmetros o ID do container que queremos enviar para o repositório que no caso do exemplo é 8d9495d05463 mas o seu será diferente. Depois informamos o namespace que é o nome da conta do Dockerhub que criamos anteriormente e o nome da imagem, seguindo de dois pontos (:) e a versão ou tag de versão, o nosso exemplo ficaria da seguinte maneira.

docker tag 8d9495d05463 SEU_DOCKER_ID/docker-is-cool:latest

Você pode utilizar o comando docker images novamente e verá que a imagem que taggeou estará listada na tabela porém com o seu Docker ID no começo, como fizemos no comando acima, se você conseguiu esse resultado podemos enviá-la para a nuvem.

Como dar Push sua imagem

Antes de aprendermos como empurrar nossa imagem para o Dockerhub precisamos fazer login com a conta que nós criamos. Abra o terminal e digite o comando docker login, ele não aceita parâmetros mas solicita o seu usuário e senha para realizar o login como no exemplo abaixo.


docker login
Username: *****
Password: *****
Login Succeeded

Após o login realizado com sucesso podemos enviar nossa imagem utilizando o comando docker push, o comando gera diversos outputs, não se assuste, isso acontece porque cada camada é pushada separadamente. Ao utilizar o comando seu retorno será similar ao abaixo.

docker push dockerID/docker-is-coolThe push refers to a repository [dockerID/docker-is-cool] (len: 1)
8d9495d05463: Image already exists

e9e06b06e14c: Image successfully pushed
Digest: sha256:ad89e88beb7dc73bf55d456e2c600e0a39dd6c9500d7cd8d1025626c4b985011

Após o término do comando você pode acessar o seu perfil no Dockerhub e visualizar a sua imagem na sua lista.

Como dar Pull na sua imagem

Como já foi mencionado todo o processo e objetivo é bastante similar ao uso do Git, o docker pull permite que você e outras pessoas tenham fácil acesso a suas imagens em qualquer lugar, assim como seus projetos no Github. Porém, você precisa remover a cópia local. Caso contrário, docker pull não terá qualquer trabalho a fazer, porque ele vai ver que você já tem a versão mais recente da imagem localmente, pois acabamos de enviar ela para o Dockerhub.

Utilizamos novamente o comando docker images para pegarmos o ID da imagem que queremos excluir e utilizamos o comando docker images rm -f ID_IMAGEM, outra opção mais curta e mais comum é utilizarmos o comando docker rmi -f ID, no nosso caso ficaria da seguinte maneira.

docker rmi -f 8d9495d05463

Pronto agora podemos baixar a nossa imagem. Uma maneira inteligente de fazer isso é utilizando o comando docker run que automaticamente baixa (puxa) imagens que ainda não existem localmente, cria e inicia um contêiner. Use o comando a seguir para puxar e executar a imagem docker-is-cool.

docker run SEU_USUARIO_DOCKER/docker-is-cool

Como você já aprendeu, cada camada é baixada separadamente, isso fica claro no output do comando que utilizamos no final a sua saída deve ser similar ao bloco abaixo.


Unable to find image ‘SEU_USUARIO_DOCKER/docker-is-cool:latest’ locally
latest: Pulling from SEU_USUARIO_DOCKER/docker-is-cool
faecf96fd5ab: Pull complete

413db2f5215b: Pull complete
Digest: sha256:66a9155c820efd2884512ba4b6e6c20a567da6c9a4ee5efdb740912a635fe17d
Status: Downloaded newer image for SEU_USUARIO_DOCKER/docker-is-cool:latest

Se você chegou até aqui não esqueça de deixar o seu ❤ e/ou um comentário. I ❤ seu Feedback. Se você tem interesse por Docker você pode ler os outros textos que eu já escrevi.

  1. Docker. O que é e como começar.
  2. Docker. O que são imagens e containers.
  3. Docker. Dando pull e push nas suas imagens.

Esse texto foi escrito originalmente para ser um capítulo do Docker Para Desenvolvedores. Um livro escrito pela comunidade para a comunidade!

O livro atualmente está no catarse com um projeto de impressão em livro físico, se você pode prestigiar essa iniciativa da comunidade Docker Brasil, não se esqueça de ajudar contribuindo ou divulgando o projeto.

--

--