Nota # 2 - O mundo das VM's, Docker e Porteiner.

Data: 30/04/2022
 

Olá, eu sou o Renoaldo, mas agora que você já está no segundo post (que a partir de hoje chamarei apelidosamente de Nota), pode me chamar de Renô.

O assunto de hoje é algo que comecei a usar essa semana: Docker!

Bom, para quem não conhece e eu confesso que ainda estou conhecendo, docker é uma espécie de versão 2.0 das Máquinas Virtuais (VM’s). E para quem não sabe o que é uma VM, pois bem, vamos lá! permita-me uma explicação rápida.

De modo geral, uma VM é um programa que roda em seu computador. A mágica das VM’s é que esse programa simula um computador também. Sendo assim, é como se você tivesse um computador dentro do seu computador. Por exemplo: um computador com o sistema operacional Windows ao abrir esse programa abre um programa de Virtualização, como o Virtual Box por exemplo, e ao apertar ‘start’ abre uma nova janela com o sistema operacional Linux, por exemplo. Assim você pode ter um Linux funcionando dentro do seu Windows. O contrário também poderia acontecer: Um Windows funcionando dentro do seu Linux.

Agora que você já sabe o que é uma Máquina Virtual (VM), fica muito mais fácil entender o Docker.

Para início de conversa e pelo que já vi, enquanto a VM virtualiza um “computador” inteiro no qual você consegue instalar programas, o Docker virtualiza um programa específico.

Por exemplo: Digamos que você queira jogar o jogo de cartas que vem no windows. Ao invés de virtualizar o Windows e jogar de cartas que há nele, você pode simplesmente instalar apenas o jogo de cartas.

E qual a diferença? Bom, os ganhos são absurdos! sobre tudo, no que se refere a uso de recursos computacionais como espaço em HD, uso de processador e Memória.

A virtualização de um sistema operacional inteiro demanda muitos recursos apenas para que esse funcione (VM) enquanto a virtualização de um programa (Docker) exige apenas recursos necessários para rodar apenas aquele programa. É como se na VM você tivesse que construir uma casa apenas para usar o quarto, enquanto com o Docker você poderia simplesmente construir o quarto e dormir o sono dos justos…rs

Veja a imagem a baixo e perceba o tamanho dos blocos. Quanto maior, mais recursos computacionais ele usa.

Como é possível ver e de forma geral, toda a parte de GUEST OS (Sistema Operacional Convidado) é desnecessária com relação aos containers. É daí que vem a grande economia de recursos.

Embora eu tenha citado o exemplo do jogo de cartas, os programas comumente instalados/virtualizados são aqueles relacionados à programação e o maior benefício desta virtualização é eliminar o problema de “dependency hell” (mas na minha máquina funciona!). Sendo assim, você pode rodar aplicações que com certeza rodará na sua máquina da mesma forma que roda em qualquer outra máquina.
 
>>> “Mão na Massa: Docker e Porteiner”
 
 Após ter instalado o Docker (seguindo o tutorial exposto pela Alura), fiz a instalação do Portainer para uso posterior através do navegador da firefox. Para instalar o Portainer nós precisamos fazer o download da imagem contida no repositório Docker.
 
Sobre o que escrevi acima:
  • Porteiner é um “programa” que roda no Docker e que nos permite gerenciar demais “programas” do Docker.
  • No docker, ao invés de baixar
    “executáveis/Instaladores” nos baixamos algo chamado “imagem” e ao rodar
    essa imagem é como se estivéssemos instalando ela.

 

Bem simples de instalar. Apenas 2 comandos:
  • sudo docker pull portainer/portainer-ce
  • sudo docker run --restart=always --name=portainer -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer-ce

O primeiro comando para baixar a imagem do portainer-ce (Comunity Edition) e o segundo para rodar o Portainer.

Encontrei uma dificuldade na hora de rodar o portainer devido a configuração da porta 9000. Em minha máquina ela estava sendo utilizada pelo HDFS Hadoop, então, após algumas pesquisas vi que a forma de configurar para outra porta era usando o parâmetro “9001:9000” para que ele pudesse rodar na porta 9001.

Usando o comando “docker ps” no terminal, podemos ver essa configuração.
 

A seguir a inteface portainer:

Uma vez dentro do portainer e localizando os demais conteiners é possível ver apenas o portainer com status “running”. Ao final da linha é possivel perceber o 9001:9000 indicando a porta em que ele esta rodando:

Como é possível notar, o porteiner irá nos auxiliar a tornar as configurações do docker mais intuitivas pois ele traduz um amontoado de comandos em simples cliques de botões. Por exemplo, ao invés de digitar algo como o segundo comando que rodei acima configurando portas, aqui no portainer podemos simplesmente clicar em Start.

Em relação ao Portainer e Docker é isso. Em próximos posts pretendo falar um pouco mais sobre conteiners docker e hadoop! Obrigado pela companhia, até a próxima!