Docker - Uma introdução básica - V

 Neste artigo vou apresentar os conceitos básicos relativos ao Docker sob o ponto de vista de um desenvolvedor .NET.

Imagens são modelos que são usados para criar contêineres e que contêm um sistema de arquivos com todos os arquivos que a aplicação no contêiner requer. (artigo anterior

Assim um contêiner é uma instância de uma imagem:

Quando testamos o Docker no segundo artigo, usamos um comando que instruiu o Docker para usar uma imagem chamada hello-world, que esta publicada no repositório público de imagens, conhecido como o Docker Hub.

Dessa forma existem repositórios de imagens prontas para facilitar a nossa vida. Se você precisar criar um contêiner com o Banco de dados MySql, você teria que montar a sua imagem e isso demandaria tempo.  Para poupar o seu trabalho basta usar a imagem oficial do MySQL que é mantido pela Docker no repositório Docker Hub: https://hub.docker.com/_/mysql/

A imagem hello-world contém todos os arquivos exigidos por um aplicativo que imprime uma simples
mensagem de saudação, fornecendo uma maneira independente de distribuir os arquivos para que eles possam ser usados para executar o aplicativo.

Veremos a seguir como podemos tratar imagens.

Trabalhando com imagens

Vamos agora exibir as imagens que temos na máquina local digitando o comando:

docker images

A resposta do comando exibe uma relação de imagens disponíveis na máquina local com as seguintes informações:

REPOSITORY O nome da imagem no repositório
TAG A versão da imagem
IMAGE ID A identificação da imagem (um hash atribuído pelo docker)
CREATED A data de criação da imagem
SIZE O tamanho ocupado pela imagem

Dessa forma quando criamos contêineres o Docker faz o download da imagem para a máquina local para agilizar tarefas futuras.

Para apenas baixar uma imagem de um repositório digite o comando:  docker pull <imagem>

Onde <imagem> é o nome da imagem.  Vamos baixar uma imagem da Asp .Net Core digitando:

docker pull microsoft/aspnetcore

   

Repetindo o comando para exibir as imagens : docker images

As imagens de repositório podem ser versionadas, permitindo que diferentes versões de uma imagem coexistam e garantindo que você obtenha a versão correta de uma imagem quando a baixar.

Uma tag é especificada ao anexar um dois pontos (:) para o nome da imagem, seguido pela tag.

Vamos agora baixar a imagem que contém a ASP .NET Core e os runtimes do .NET Core e bibliotecas otimizadas para rodar a ASP .NET Core em produção.

docker pull microsoft/dotnet:2.1-aspnetcore-runtime

O comando usa a tag :2.1 indicando que a imagem possui a versão 2.1 da ASP .NET Core.

Exibindo as imagens teremos: docker images

Omitir a tag da imagem equivale a solicitar a imagem marcada como mais recente usando a tag latest.

Assim os comandos abaixo são equivalentes:

docker pull microsoft/aspnetcore e docker pull microsoft/aspnetcore:latest

Para ver detalhes sobre as tags consulte o repositório: https://hub.docker.com/r/microsoft/aspnetcore/

Para deletar uma imagem da máquina local podemos usar o comando rmi e indicar o identificador da imagem ou o nome da imagem.

Vamos apagar a imagem  microsoft/aspnetcore identificada pelo IMAGE ID db030c19e94b :

docker rmi db030c19e94b

Para obter o mesmo resultado poderíamos ter usando o comando informando o nome da imagem:

docker rmi microsoft/aspnetcore

Exibindo as imagens veremos que a imagem não aparece mais na listagem:

docker images

Para remover uma imagem que estiver sendo usada por um contêiner usamos o parâmetro -f :

docker rmi -f db030c19e94b

Para apagar todas as imagens de uma vez usamos o comando:

docker rmi -f $(docker images -q)

O argumento -q especifica o modo silencioso(quiet) e retorna os valores de IMAGE ID para o comando e assim apaga todas as imagens.

Assim  docker images -q  retorna todos os valores de IMAGE ID:

docker images -q

Para inspecionar uma imagem e exibir detalhes de configuração usamos o comando:

docker inspect <NOME OU ID DA IMAGEM>   

onde podemos usar o valor de REPOSITORY ou o valor de IMAGE ID:

docker inspect 1fe6774e5e9e ou docker inspect microsoft/dotnet

Esse comando é útil para inspecionar informações detalhadas das imagens existentes e criadas.

Em todos os comandos mostrados não foi usado o identificador image que especifica que o comando esta atuando sobre uma imagem. Embora os comandos funcionem usar o identificador é a sintaxe recomendada.

Abaixo segue um resumo dos principais comandos para tratar imagens:

docker image build  Constrói (Build) uma imagem a partir de um Dockerfile.
docker image history  Exibe o histórico de uma imagem
docker image import  Importa o conteúdo a partir de um tarball p/criar imagem de sistema de arquivos
docker image inspect  Exibe informação detalhada da imagem
docker image load  Carrega um imagem a partir de um arquivo tar ou STDIN
docker image ls  Lista Imagens locais.
docker image prune  Remove uma imagem não usada.
docker image pull  Baixa uma imagem ou um repositório de um registro.
docker image push  Envia uma imagem para um repositório. (Tem que criar conta e fazer login)
docker image rm  Remove uma ou mais imagens. Remove tudo: docker rmi $(docker images -q)
docker image save  Salva uma ou mais imagem para um arquivo tar
docker image tag  Cria uma tag TARGET_IMAGE que se refere a SOURCE_IMAGE

Na próxima aula veremos como criar nossas próprias imagens.

"E disse-lhe um: Senhor, são poucos os que se salvam? E ele lhe respondeu:
Porfiai por entrar pela porta estreita; porque eu vos digo que muitos procurarão entrar, e não poderão."

Lucas 13:23,24

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti