Pular para o conteúdo principal

Docker - Manipulando Imagens

Olá pessoal hoje iremos começar uma série de tutoriais falando dos principais comandos que utilizamos em ambientes com Docker, e para começar vamos falar sobre imagens.


Começando com Docker

Aqui não vamos entrar em detalhes de instalação do Docker, mas vou deixar abaixo links para tutoriais que explicam estes detalhes.

O Que são Imagens

As imagens são Templates para criação dos containers, nelas adicionamos informações sobre o SO, comandos de inicialização, entre outras configurações, para ficar mais claro oque são as imagens, podemos fazer uma analogia entre imagens x containers com classes x objetos em linguagens de programação orientadas a objetos como Java, Kotlin, etc.

Principais Comandos

Utilizando o help

O comando mais útil que teremos ao manipular Docker é o help, ele pode ser utilizando em vários níveis, sendo direto no image ou em um subcomando de image, ele irá fornecer detalhes sobre como o comando deve ser executado, atributos, sintaxe, etc:

docker image --help

docker image <comando> --help


docker image --help

docker image build --help

Criando uma imagem

A criação de uma imagem consiste na leitura de um arquivo descritor contendo toda a sequência de camadas, com Docker este arquivo é o Dockerfile, na execução do comando build é importante que o arquivo Dockerfile esteja presente no diretório.

docker image build -t <<name_image>> .

Listando imagens

Podemos listar as imagens de diferentes formas, abaixo temos os diferentes comandos que podem ser utilizados, como resultado teremos a lista de imagens presentes em seu ambiente:

docker images
 
docker image list
  
docker image ls

Resultado da execução do docker images.

Procurando novas imagens

Este comando é bem interessante porque ele retorna as imagens encontradas no repositório que coincidem com a palavra procurada.

docker search <<palavra chave>>

Abaixo executamos o search procurando por node:

Resultado da procura por node.

Download de novas imagens

O comando pull serve para baixar uma imagem do repositório para nosso ambiente local, aqui vale ressaltar que uma imagem pode conter diferentes tags, com isso devemos especificar no comando qual tag gostaríamos, caso a tag não seja especificada, o padrão será o download da tag latest.

docker pull <<nome_imagem:tag>>

Baixando a imagem do cassandra.

Removendo imagens

Para remover uma imagem do ambiente local podemos executar o comando abaixo:

docker image rm <ID ou nome_imagem>

Existem alguns momentos que podemos ter problemas com o rm, por exemplo:
  • Caso exista um container ativo criado a partir da imagem, não poderemos exclui-lá;
  • Caso tenhamos a mesma imagem no ambiente com versões diferentes, devemos passar a tag que gostaríamos de excluir: <ID ou nome_imagem>:<tag>

Informações sobre a imagem

Utilizamos este comando para exibir informações detalhadas sobre a imagem, o resultado será um JSON contendo um conjunto de informações, que podem ser utilizadas em ferramentas de gestão de ambiente, ou para detalhamento de como a imagem foi criada.

docker image inspect <ID ou nome_imagem>

Salvando uma imagem em arquivo TAR

Um recurso interessante mais pouco utilizado é a possibilidade de salvar a imagem em um arquivo TAR, dessa forma podemos levar nossa imagem para um outro ambiente como um arquivo compactado.

docker image save <ID ou nome_imagem> --output <destino do arquivo>

Ao executar: docker image save nginx:1.12-alpine --output c:\\nginx-1.12-alpine.tar, teremos a criação do arquivo nginx-1.12-alpine.tar

Importando uma imagem de um arquivo TAR

É possível importar um arquivo .TAR contendo uma imagem, aqui vamos executar a importação do nginx que geramos no exemplo anterior, teremos a criação da imagem no ambiente de acordo com o nome tag usadas no comando:

docker image import <caminho e nome_arquivo_tar> <nome_imagem:tag>

 Veja abaixo a listagem após executar o import com nginx:1.12-alpine

Listagem da imagem importada do arquivo TAR.

Conclusão

Existem uma porção de outros comandos que podemos utilizar para manipular imagens Docker, a grande vantagem de trabalhar com uma ferramenta completa como estaé sua vasta documentação, que contém praticamente todos os comandos e seus resultados muito bem detalhados.

Até a próxima.

Referências




Comentários

Postagens mais visitadas deste blog

Utilizando LocalDate, LocalDateTime e LocalTime na Prática

Tudo bem pessoal, hoje iremos avaliar e analisar operações de manipulação de Datas envolvendo a JavaTime API introduzida no Java 8.

Exemplos da java.time API
Já se passaram alguns anos desde o lançamento do Java 8 e mesmo após este período, há empresas que desconhecem o poder da java.time API, esta foi uma nova API de datas introduzida no Java 8 visando resolver problemas que tínhamos com as velhas classes Date e Calendar.

Vamos mostrar vários exemplos práticos do uso da API:
Criação de objetos No exemplo abaixo, estamos criando os objetos para manipulação de datas, perceba que temos 3 tipos, sendo LocalDate para manipular datas, LocalDateTime para manipular data/hora e LocalTime para horas:
LocalDate localDate = LocalDate.now(); LocalDateTime localDateTime = LocalDateTime.now(); LocalTime localTime = LocalTime.now();
Utilizando formatação Aqui realizamos a operação de formatação, perceba que não foi necessário utilizar a classe SimpleDateFormat, que usaríamos em conjunto com D…

Lendo e Manipulando arquivos CSV com Java

Olá hoje veremos como realizar a leitura e manipulação de arquivos CSV com Java, mostrando que as novas versões da plataforma Java deixaram algumas tarefas simples de serem realizadas.

Exemplo de Arquivo Hoje em dia é comum ao realizar integrações ou carga de dados o uso de arquivos CSV, isto porque, este arquivo possui uma estrutura de fácil entendimento e simples de manipular na maioria das plataformas de desenvolvimento.

Para realizar a leitura dos dados vamos manipular um arquivo com as seguintes colunas: namecpfagephone address:

name;cpf;age;phone;address caio;123456789;20;1145223643;AvenidaPaulista vinicius;147852369;18;1125253625;AvenidaManoel sandra;963258741;30;1174587858;RuaTeixeira regina;125478522;40;1145254536;RuaFernando fernando;785245563;42;1145253669;RuaPereira augusto;456123014;50;1125363633;AvenidaPaulinia maria;456123789;10;1125455525;AvenidaNossaSenhora
Para representar os dados em objetos Java iremos utilizar a seguinte classe:

importlombok.AllArgsConstruc…

Versionamento de Banco Dados com Flyway

Olá pessoal, hoje iremos analisar e aprender como realizar o versionamento e gerenciamento das bases de dados relacionais utilizando o framework Flyway.

Versionamento de Banco Dados Ao trabalhar com desenvolvimento de sistemas é comum realizarmos o versionamento, isso porque uma aplicação pode necessitar de correções, novas funcionalidades e evoluções, onde para garantir a compatibilidade e cuidar do seu ciclo de vida, geramos versões onde é especificado quais itens estão presentes em cada release.
Vamos imaginar seguinte cenário: Sistema ERP1.0.0: Entrega dos módulos Financeiro e RH;1.1.0: Entrega do módulo Contas a Receber. Perceba que a ideia é controlar o que cada versão possui de diferente, e para controlar essas mudanças no lado da aplicação existem várias técnicas e ferramentas, mas e para controlar as mudanças no lado do Banco de dados ? 
Para isso podemos utilizar ferramentas de versionamento que ajudam a realizar este controle, a ferramenta que iremos utilizar é o Flyway.
Con…