Dockerhub e Servidor Registry
Tags: docker, dockerhub, registry, infraestrutura
Published: 2020-06-26 22:18:19

Dockerhub é reposítorio de imagens do Docker, semelhante ao Github, onde criamos repositórios de códigos em que outras pessoas possam usar, no Dockerhub hospedamos nossas imagens do Docker, privadas ou públicas, de organizações ou não. E assim outras pessoas podem utilizar esta imagem que você criou.
Acessando o site do [Dockerhub](https://hub.docker.com/), podemos criar nossa conta nele e já começar a usar.

## Comandos para utilizar o Dockerhub localmente

### LOGIN

Com o comando `docker login` podemos fazer login em nosso Dockerhub. Caso queira fazer login em outro registry sem ser o Dockerhub, basta colocar a url dele: `docker login <url>` .

### PUSH

Com o comando `docker push` é possível fazer o push de uma imagem local para o Dockerhub. O nome da imagem deve conter o seu nome de usuário do dockerhub + o nome que você quer dar a imagem + a versão. Ex:

```bash
docker push username/webserver:1.0 
```

(Para mudar o nome da imagem, utilize o comando:

```bash
docker tag username/image-name .
```

## PULL

Para baixar a imagem de volta para a máquina local, basta usar o comando:

```bash
docker pull <nome-da-imagem>
```

Será feito o download da imagem. Finalizado o download, podemos rodar a imagem com:

```bash
docker run -ti <nome-da-imagem>
```

# Registry

Um registry seria como um Dockerhub próprio, para você ou sua empresa. Você pode rodar em sua máquina local ou em algum servidor, configurando seu próprio DNS, controle de acesso de usuários e etc.

É possível também adicionar interfaces web para que você possa visualizar seu Registry mais facilmente, no Dockerhub tem muitos exemplos.

## Criando um registry local

Para criar um Registry local, para não precisar do Dockerhub, seja para você mesmo ou para sua empresa, fazemos o seguinte:

```bash
docker run -d -p 5000:5000 --restart=always --name registry registry:2
```

Este comando está linkando nossa porta 5000 do host docker (máquina local) e da imagem. Estamos dizendo também que caso aconteça algo com nosso container e ele caia, ele será automaticamente restartado. Estamos dando o nome do nosso container de "registry" e utilizando a imagem "registry:2" do Dockerhub.

## Subindo imagem para o registry local

Para subir imagens para este registry local, apenas renomeamos uma imagem, substituindo o nome de usuário pela url do registry, que no nosso caso no momento fica: `docker tag <id-da-imagem> [localhost:5000/webserver:](http://localhost:5000/webserver:1.0`)1.0` , mas poderia ser um dns que tivesse etc.

`docker push` também para subir, assim como era para subir para o Dockehub, e `docker pull` caso quisermos baixar uma imagem do registry.

Para verificarmos quais imagens temos em nosso Registry, podemos rodar: (caso seja um DNS, seria apenas trocar a url, assim como a porta também).

```bash
curl localhost:5000/v2/_catalog
```

## Conclusão
O Dockerhub é uma alternativa bem interessante caso você ou empresa queira compartilhar imagens, seja pública ou privado. E para quem deseja ter uma alternativa mais privada, com suas próprias regras e configurações, o Registry é uma ótima alternativa, sendo muito personalizável e tendo muito conteúdo disponível para auxiliar quem deseja fazer a criação de um.