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.
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Entity Framework - Conceitos Básicos - Uma visão geral - Macoratti