Vamos explorar o universo do Docker Hub.
Neste guia, vamos nos aprofundar no Docker Hub, abrangendo seu funcionamento, o processo de criação de imagens personalizadas e como ele facilita a publicação e o download de imagens. Além disso, dedicaremos um tempo para analisar alguns dos repositórios mais populares disponíveis no Docker Hub.
Requisitos
É fundamental possuir um conhecimento básico sobre o Docker e estar familiarizado com os ambientes Windows e Linux. Para os exercícios práticos deste guia, utilizaremos o Docker Desktop, permitindo construir e enviar imagens para o Docker Hub. Usuários de Windows e Mac podem realizar o download e a instalação através deste link, enquanto usuários Linux podem seguir este guia.
O que é o Docker Hub?
O Docker Hub é um serviço de registro de repositórios mantido pela Docker Inc..
Essa plataforma permite o envio e o download de imagens Docker. Podemos considerá-lo um análogo ao GitHub, onde armazenamos e compartilhamos código-fonte, mas no caso do Docker Hub, lidamos com imagens de contêineres. Trata-se de um repositório online, baseado em nuvem, que oferece suporte tanto a repositórios públicos quanto privados. Repositórios públicos são acessíveis a todos, enquanto os privados são restritos ao proprietário; o armazenamento de repositórios privados acima de um determinado limite implica custos.
Funcionalidades do Docker Hub
O Docker Hub disponibiliza várias funcionalidades importantes:
#1. Repositórios de Imagens
Com essa funcionalidade, podemos encontrar e baixar imagens de contêineres do Docker Hub.
Também é possível publicar imagens, tanto como repositórios públicos quanto privados.
#2. Equipes e Organizações
O Docker Hub permite a criação de grupos de trabalho e o compartilhamento de repositórios privados, acessíveis somente aos membros da organização, assegurando o controle de acesso às imagens de contêiner.
#3. Integração com GitHub e Bitbucket
A plataforma oferece integração com repositórios de código-fonte como GitHub e BitBucket.
#4. Builds Automatizados
Quando ocorrem alterações no código-fonte em repositórios como GitHub ou BitBucket, o Docker Hub detecta automaticamente essas mudanças e constrói novas imagens de contêineres, enviando-as para o Hub.
#5. Webhooks
Após o envio de uma imagem, os webhooks permitem acionar ações em outros serviços, integrando o Docker Hub com outras plataformas.
#6. Imagens Oficiais e de Editores
Imagens de alta qualidade fornecidas pela equipe Docker são classificadas como imagens oficiais, estando disponíveis para uso e download. Igualmente, imagens de alta qualidade, mantidas por terceiros, são conhecidas como imagens de editores ou certificadas, oferecendo compatibilidade e suporte para Docker Enterprise. Detalharemos mais sobre imagens certificadas ao longo deste artigo.
Criando o Primeiro Repositório
Para esta etapa, é necessário fazer login no Docker Hub utilizando suas credenciais. Se você não possui uma conta, crie uma clicando no botão “Sign-Up” na página inicial. Após o login, clique em “Create Repository” na página de boas-vindas.
- Após clicar em “Create Repository”, você deverá fornecer um nome para o seu repositório.
- Escolha entre as opções de visibilidade: “público” ou “privado”.
É possível integrar repositórios de código-fonte, como GitHub e BitBucket, através da configuração de build, mas isso é opcional e pode ser feito posteriormente.
- Finalizado, clique em “Create”.
Parabéns! Seu primeiro repositório está criado e terá uma aparência similar a esta:
O Docker Hub oferece um repositório privado gratuito. Caso precise de mais repositórios privados, será necessário realizar um upgrade para um plano pago.
Agora, abra a ferramenta/terminal do Docker Desktop e efetue o login no Docker Hub utilizando o seguinte comando:
docker login
Explorando as Imagens
Existem duas formas de buscar repositórios públicos e imagens no Docker Hub. Uma delas é através do site do Docker Hub, e a outra, utilizando a linha de comando, com o seguinte comando. Por exemplo, vamos pesquisar a imagem do repositório MySQL:
docker search mysql
Baixando uma Imagem
Para baixar uma imagem do Docker Hub, usamos o comando pull:
# docker pull mysql
Se já existir uma imagem do MySQL em sua máquina, o comando acima irá atualizá-la para a versão mais recente. É importante notar que a pesquisa por “mysql” retorna várias imagens, uma vez que qualquer pessoa pode enviar suas imagens. A escolha da imagem ideal dependerá do seu caso de uso.
Por exemplo, vamos baixar a imagem bitnami/mysql:
# docker pull bitnami/mysql
Criando uma Imagem
Esse processo requer um Dockerfile. Pense no Dockerfile como um conjunto de instruções para o Docker, dizendo a ele o que deve ser construído. Em essência, é um arquivo de configuração com instruções.
Como funciona?
O Docker lê as instruções do Dockerfile e cria imagens automaticamente. Uma imagem Docker é um sistema de arquivos em camadas, consistindo em várias camadas somente leitura. Cada camada da imagem representa instruções do Dockerfile. Vamos seguir as etapas a seguir para criar uma imagem usando o Dockerfile.
Crie um Dockerfile que especifique a configuração de sua aplicação.
# sudo vim Dockerfile
Nota – O nome do arquivo deve ser Dockerfile, com a letra “D” maiúscula.
FROM ubuntu:16.04 MAINTAINER [email protected] RUN apt-get update RUN apt-get install –y mysql CMD echo "Minha primeira imagem criada."
Vamos analisar as principais palavras-chave usadas no Dockerfile:
- Utilizamos o símbolo # para adicionar comentários ao Dockerfile.
- A palavra-chave “FROM” define a imagem base a ser usada.
- A palavra-chave “MAINTAINER” identifica quem manterá a imagem.
- A palavra-chave “RUN” executa as instruções fornecidas na imagem. Nesse exemplo, atualizamos o sistema e instalamos o MySQL.
- A palavra-chave “CMD” executa um comando assim que o contêiner é iniciado.
- A palavra-chave “COPY” pode ser usada para copiar arquivos do sistema operacional host para o contêiner Docker.
- A palavra-chave “EXPOSE” especifica o número da porta em que o contêiner executará seu processo.
Para construir sua imagem Docker, execute o seguinte comando:
Sintaxe:
docker build -t <seu_nome_de_usuario>/nome-do-repositorio .
# docker build -t asadali08537/first-repo .
Neste comando, o nome da imagem é “asadali08537/first-repo” e o ponto (.) especifica o diretório de trabalho atual, indicando ao Docker para procurar o arquivo Dockerfile nesse diretório. O parâmetro “-t” é usado para identificar a imagem. A saída será semelhante a:
Agora, vamos testar a imagem executando-a com o comando run do Docker:
docker run asadali08527/first-repo
Ao executar o comando acima, sua imagem Docker deverá instalar o MySQL com todas as atualizações necessárias e exibir uma mensagem no final.
Enviando uma Imagem
Após criar e testar sua imagem, você poderá enviá-la para o Docker Hub usando o comando push:
docker push asadali08527/first-repo
É possível verificar as tags da imagem e seu status no Docker Hub, que terá uma aparência similar a esta:
O Que São Imagens Certificadas do Docker?
Essas são imagens oficiais enviadas por fornecedores ou colaboradores. Uma imagem é certificada pelo Docker Hub se seu conteúdo estiver em conformidade com os padrões e leis estabelecidas. Basicamente, a imagem deve passar por testes de qualidade.
O Docker Hub disponibiliza a ferramenta inspectDockerImage, através da qual um fornecedor pode certificar imagens e plugins (geralmente, fornecedores ou colaboradores publicam seus plugins para registrar volumes e redes).
Observação:
Para publicar sua imagem como uma imagem Docker certificada, você precisa certificar e testar suas imagens e plugins usando a ferramenta inspectDockerImage. Uma vez que seu conteúdo esteja certificado e testado, o Docker Hub fará a certificação. Caso seu conteúdo não atenda aos requisitos, ele não poderá ser publicado como certificado.
Imagens Populares no Docker Hub
Existem diversas imagens selecionadas e otimizadas disponíveis no Docker Hub.
A popularidade de uma imagem depende de vários fatores, como número de downloads, presença no mercado, avaliações, pontuações de satisfação, etc. Para consultar uma lista detalhada dos repositórios mais populares, acesse a página do Docker Hub. A escolha da imagem também depende do sistema operacional e de sua arquitetura. Se já soubermos para qual sistema operacional e arquitetura a imagem será utilizada, devemos considerar os seguintes pontos antes de baixá-la:
- Procure por uma versão específica usando tags (geralmente a “latest”).
- Escolha aquela com o maior número de downloads e estrelas.
- Verifique se há atualizações (quando foi atualizada pela última vez).
- Se possível, verifique seu tipo, optando por editores verificados ou imagens oficiais (Docker Certified).
Webhooks
Um webhook é um callback web que funciona com eventos, e permite que um aplicativo forneça informações em tempo real para outro. Atualmente, quase todos os aplicativos possuem o recurso webhook, o Docker Hub também.
Trata-se de uma API de push HTTP acionada por eventos definidos pelo usuário. Podemos utilizar webhooks no Docker para notificar um aplicativo ou serviço sobre o uso de imagens. Normalmente, configuramos webhooks no Docker como um pipeline de eventos, de modo que cada upload de nova imagem acione aplicativos de teste para executar casos de teste. Se os testes forem bem-sucedidos, ele aciona outro evento, que é o deploy do contêiner. E quando o deploy é concluído, outros eventos são acionados para registrar as mudanças feitas até o momento.
Conclusão
Espero que agora você tenha uma compreensão clara do Docker Hub e de como pesquisar, criar e enviar imagens. Lembre-se que ao enviar imagens públicas, elas estarão visíveis para todos.
Se ainda não o fez, verifique este guia de instalação do Docker.