Pesquisa de site

Parte 4 do Docker: criando e publicando imagens docker personalizadas


Nesta página

  1. Introdução aos arquivos do Docker
  2. Criando uma imagem do Docker
  3. Construindo localmente usando um Dockerfile
  4. Publicando sua imagem personalizada do Docker no Docker Hub
  5. Baixando sua imagem personalizada
  6. Resumo

Na terceira parte, trabalhamos com as imagens do docker, aprendemos o básico e criamos nosso primeiro contêiner de bloco de notas usando WordPress ou DokuWiki.

Nesta quarta parte, veremos como as imagens docker são construídas e criaremos nossa própria imagem personalizada pronta para ser baixada e compartilhada com nossos amigos, colegas e comunidades.

Para este tutorial, usaremos a imagem Whale Docker. A baleia é o mascote oficial do Docker e a imagem do docker Whale se assemelha ao programa cowsay que gera imagens ASCII de uma vaca no terminal com uma mensagem. Ele também pode gerar imagens usando imagens pré-fabricadas de outros animais, como Tux the Penguin e o mascote do Linux.

Introdução aos arquivos do Docker

Na parte anterior, nos apresentamos ao Docker Hub e aprendemos que ele é um recurso centralizado baseado em nuvem para descoberta de imagens de contêiner, construção de imagens e distribuição dessas imagens. Também aprendemos que uma imagem docker é uma imagem multicamada sobre uma imagem base. Dito isso, o uso de uma imagem de base remove o incômodo de criar do zero um sistema operacional adequado para a imagem do docker e nos dá a opção de personalizar as camadas superiores onde nosso software residirá.

Para criar uma imagem personalizada usando uma imagem base, precisamos fornecer ao mecanismo do docker instruções sobre como instalar e configurar pacotes e arquivos e também algumas configurações que os acompanham. Essas instruções são escritas em um arquivo de texto simples chamado \dockerfile. Dockerfiles são como receitas que você entrega a um chef e ele prepara uma ótima refeição para você. Esses arquivos docker são escritos usando um conjunto simples e descritivo de etapas que são chamadas de instruções. Cada instrução cria uma nova camada em nossa imagem. As instruções incluem ações como executar um comando, adicionar um arquivo ou diretório, qual processo executar ao iniciar um contêiner a partir da imagem, etc. Esse processo é exatamente como você definiria uma série de comandos em um script de shell. Depois de solicitar a construção de uma imagem, o Docker lê o dockerfile, executa as instruções e retorna uma imagem final.

Construindo uma imagem do Docker

Há duas maneiras de criar sua imagem personalizada do Docker. Você pode construí-lo em seu computador ou usar o Docker Hub sobre o qual falamos anteriormente. Nesta parte, aprenderemos como criar nossa imagem do Docker localmente e, em seguida, publicá-la no Docker Hub Registry.

Construindo localmente usando um Dockerfile

Vamos criar uma imagem do Docker personalizada usando a imagem \Whale say\ que é uma pequena imagem do Docker (baseada em uma imagem do Ubuntu) que quando você a executa, diz algo que você programou para dizer de volta para você.

Primeiro, abra um terminal e crie uma nova pasta digitando:

mkdir mywhale

Este diretório serve como o contexto para sua construção. O contexto significa apenas que ele contém todas as coisas que você precisa para construir sua imagem com sucesso.

Entre na sua nova pasta com:

cd mywhale

e crie um Dockerfile na pasta digitando:

touch Dockerfile

Agora você deve ver o Dockerfile vazio que criamos se você der o comando ll:

ll
$ ll
total 8.0K
-rw-rw-r-- 1 user user 0 23:26 Dockerfile

Abra-o com seu editor de texto favorito e adicione:

FROM docker/whalesay:latest

Essa primeira linha de instrução, com a palavra-chave FROM, informa ao Docker em qual imagem sua imagem é baseada. Você está baseando seu novo trabalho na imagem existente da baleia.

A próxima instrução que adicionaremos dará à nossa baleia a capacidade de adivinhar o futuro. Para realizar esta tarefa, usaremos o pacote fortune que está disponível nos repositórios do Ubuntu (lembre-se que a imagem da baleia é baseada em uma imagem do Ubuntu). O programa da sorte tem um comando que imprime frases sábias para nossa baleia dizer.

Então, o primeiro passo é instalá-lo. Para fazer isso, adicionamos a instrução de instalação apt usual:

RUN apt -y update && apt -y install fortunes

Assim que a imagem tiver o software necessário, você instrui o software a ser executado quando a imagem for carregada. Para fazer isso, adicionamos a seguinte instrução:

CMD /usr/games/fortune -a | cowsay

A linha acima diz ao programa fortuna para enviar uma citação escolhida aleatoriamente para o programa cowsay

E terminamos! Agora salve o arquivo e saia.
Você pode verificar o que fez executando \cat Dockerfile\ para que seu Dockerfile fique assim:

cat Dockerfile
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

Agora que tudo (espero) parece bom, é hora de criar nossa imagem do Docker (não se esqueça do ponto . no e do comando).:

docker build -t my-docker-whale .

O comando acima pega o Dockerfile na pasta atual e cria uma imagem chamada \my-docker-whale em sua máquina local.

Você pode verificar se sua imagem do Docker está realmente armazenada em seu computador com:

docker images

Em seguida, você pode executar sua imagem do Docker digitando o seguinte:

docker run my-docker-whale

Depois de executado, você obterá algo como a imagem a seguir

Publicando sua imagem personalizada do Docker no Docker Hub

Sua próxima opção é publicar a imagem do Docker criada no Docker Hub Repository. Para fazer isso, você precisará criar uma conta na página de inscrição do Docker Hub, onde fornecerá um nome, senha e endereço de e-mail para sua conta. Também devo ressaltar que o serviço Docker Hub é gratuito para imagens públicas do docker. Depois de criar sua conta, você pode enviar a imagem que criou anteriormente para disponibilizá-la para uso de outras pessoas.

Para isso, você precisará do ID e da TAG da sua imagem \my-docker-whale.

Execute novamente o comando \docker images\ e anote o ID e a TAG da sua imagem do Docker, por exemplo a69f3f5e1a31.

Agora, com o seguinte comando, prepararemos nossa imagem do Docker para sua jornada para o mundo exterior (a parte do nome da conta do comando é o nome da sua conta na página de perfil do Docker Hube):

docker tag a69f3f5e1a31 accountname/my-docker-whale:latest

Execute o comando \docker images\ e verifique sua imagem recém marcada.

Em seguida, use o comando \docker login\ para fazer login no Docker Hub a partir da linha de comando.

O formato do comando login é:

docker login --username=yourhubusername 

Quando solicitado, digite sua senha e pressione enter.

Agora você pode enviar sua imagem para o repositório recém-criado:

docker push accountname/my-docker-whale

O comando acima pode demorar um pouco para ser concluído, dependendo da largura de banda de upload de suas conexões, pois carrega algo como 180ΜΒ de dados (em nosso exemplo). Depois de concluído, você pode acessar seu perfil no Docker Hub e verificar sua nova imagem.

Baixando sua imagem personalizada

Se você quiser extrair sua imagem do repositório do Docker Hub, precisará primeiro excluir a imagem original de sua máquina local porque o Docker se recusaria a extrair do hub, pois as imagens local e remota são idênticas.

Como você se lembra da parte anterior, para remover uma imagem docker, você deve executar o comando \docker rmi\. Você pode usar um ID ou o nome para remover uma imagem:

docker rmi -f a69f3f5e1a31

Agora que a imagem foi excluída, você pode extrair e carregar a imagem do seu repositório usando o comando \docker run\ incluindo o nome da sua conta do Docker Hub.

docker run accountname/my-docker-whale

Como excluímos a imagem anteriormente e ela não estava mais disponível em nosso sistema local, o Docker fará o download dela e a armazenará no local designado.

Resumo

Nesta parte, aprendemos como criar um arquivo Docker, escrever algumas instruções básicas e construir uma imagem usando-o como receita. Também abordamos os fundamentos de enviar nossa nova imagem personalizada para o registro do Docker Hub e puxá-la para nossa máquina local. Na próxima parte desta série de tutoriais do Docker, mostrarei como podemos automatizar o procedimento de criação de imagens para que possamos criar instantaneamente imagens personalizadas sempre que precisarmos delas! Fique atento.