Virtualização, Containers e Docker

Postado por Paulo André Soares de Mendonça em October 29, 2019 · 4 minutos de leitura

Virtualização, Containers e Docker

Olá Pessoal,

Este é meu primeiro post aqui Blog, gostaria de agradecer a todos que chegaram até aqui e informar que em breve teremos muitos outros textos relacionados a área de tecnologia.

Primeiramente antes de começar a falar o Docker, faz-se necessário contextualizar a tecnologia das Virtual Machines (Máquinas virtuais) e os Containers.

Virtual Machines

A tecnologia de virtualização de máquinas surgiu da necessidade de aproveitar melhor os recursos, que no decorrer do tempo a virtualização de servidores ofereceu vários benefícios, como a capacidade de gerenciar de maneira mais eficiente os aplicativos em um servidor.

A utilização da virtualização gerou as seguintes vantagens:

  • Economia de custos por meio de área de ocupação reduzida;
  • Provisionamento mais rápido de servidores e
  • Recuperação de desastres mais eficiente

O desenvolvimento também se beneficiou com esta tecnologia, porque com uma maior uso de servidores maiores e mais rápidos liberou subsequentemente os recursos não utilizados para serem redirecionados para controle de qualidade, desenvolvimento, laboratório ou até mesmos outros projetos.

Dentro de cada máquina virtual, é executado um sistema operacional convidado. VMs com sistemas operacionais diferentes podem ser executados no mesmo servidor físico, uma VM UNIX por exemplo pode ficar ao lado de uma VM Linux, e assim por diante. Cada VM possui os seus próprios binários, bibliotecas e aplicativos aos quais atende, e a VM pode ter muitos gigabytes.

Containers

A tecnologia de virtualização do Sistema Operacional cresceu muito nos últimos anos para permitir que as aplicações utilizassem melhor os recursos computacionais e funcionassem de forma previsível quando movido de um ambiente de servidor para outro.

Os containers fornecem uma maneira de executar esses sistemas isolados de forma mais eficiente e em um único servidor ou sistema operacional host.

Os containers ficam em cima de um servidor físico e de seu SO host como por exemplo o Linux ou o Windows. Cada container compartilha o kernel do sistema operacional host, e geralmente os binários e bibliotecas.

Componentes compartilhados estão somente em modo leitura. Assim, os containers são excepcionalmente “leves”, eles têm apenas megabytes e levam apenas alguns segundos para iniciar, versus gigabytes e minutos para uma VM.

Eles também reduzem as despesas gerais de gerenciamento. Como eles compartilham um sistema operacional comum, apenas um único sistema operacional precisa de cuidados e alimentação para correções de bugs, patches e assim por diante. Esse conceito é semelhante ao que experimentamos com hosts de hipervisor: menos pontos de gerenciamento, mas um domínio de falha um pouco maior.

Em resumo, os containers são mais leves e mais portáteis que as VMs.

Docker

Docker é um software de container da empresa Docker Inc, escrito na linguagem GO, que fornece uma camada de abstração e automação para virtualização de sistema operacional utilizando a tecnologia de containers.

O Docker disponibilizou uma linguagem comum entre desenvolvedores e administradores de servidores, que é utilizada para construir arquivos com as definições da infraestrutura necessária e como a aplicação será disposta nesse ambiente.

Outro ponto interessante é que o Docker também disponibiliza uma nuvem pública, chamada Docker Hub, para compartilhamento de imagens (ambientes prontos), que podem ser utilizados para viabilizar customizações para ambientes específicos.

Uma vantagem na utilização dessa tecnologia é a rapidez de como o ambiente do software é disponibilizado em relação a tecnologia de virtualização. Vejamos a seguir alguns outros benefícios:

  • Possibilidade de configurar diferentes ambientes de forma rápida;
  • Compartilhar de forma fácil os processos entre diferentes aplicativos e
  • No Docker há a possibilidade de gerar imagens e números de versões.


Referências

https://opensource.com/resources/what-docker
https://www.opservices.com.br/o-que-e-docker
https://pt.wikipedia.org/wiki/Docker_(software)
https://stack.desenvolvedor.expert/appendix/docker/oquee.html
https://blog.netapp.com/blogs/containers-vs-vms
https://www.docker.com/resources/what-container
https://computerworld.com.br