Imagine que você trabalha com um projeto complexo, que é dependente de várias bibliotecas e pacotes, e você precisa fazer uma demonstração em um outro computador, ou mesmo enviar o projeto a um colega, a fim de que ele realize teste, por exemplo. Existe uma maneira de você enviar todo o seu trabalho configurado de forma correta sem gastar tempo e com garantia de boa performance: basta utilizar o docker.
O que é o Docker?
O Docker é uma ferramenta desenvolvida para auxiliar a criação, distribuição e funcionamento de aplicações utilizando contêiners. Ele garante isolamento entre a aplicação e o resto do sistema de forma semelhante a máquinas virtuais, que permitem a existência de um segundo sistema operacional (SO) sem particionamento do disco rígido. Utilizando-se o Docker, evita-se problemas como conflitos entre programas, falta de dependências e ele ainda garante a portabilidade da aplicação entre computadores.
Como funciona o Docker?
O Docker usa funcionalidades do kernel linux – a parte do sistema operacional que gerencia o hardware – como namespaces e grupos de controle para criar contêineres (ambiente virtualizado com seu próprio usuário). Embora ele não seja uma Máquina Virtual, a sua estrutura é semelhante.
Estrutura de uma Máquina Virtual
Uma das principais funções de um sistema operacional é a alocação de recursos para programas. Por exemplo, ao ser inicializado, o Matlab faz uma requisição de recursos ao kernel do SO (memória RAM, processamento) e este aloca os recursos necessários para o funcionamento correto do programa. O trabalho do Hipervisor é fazer essa requisição ao sistema operacional nativo para que a Máquina Virtual possa funcionar.
Para a criação e testes de aplicações de software, utilizar-se de Máquinas Virtuais é ineficaz. Além de ocupar muito espaço no disco rígido, já que são necessários dois sistemas operacionais inteiros, o uso do Hipervisor deixa as aplicações mais lentas.
Estrutura Docker
O Docker funciona de forma parecida a uma Máquina Virtual, mas há duas diferenças importantes:
- A comunicação do Docker Engine (análogo ao Hipervisor) é feita diretamente com o kernel do sistema operacional nativo. Isso aumenta a velocidade da comunicação e possibilita um controle maior sobre o uso de recursos dos contêineres.
- SOs contidos nos contêineres não precisam de kernels próprios, permitindo as aplicações serem bem mais leves que um sistema operacional padrão.
Links úteis:
- Curso do udemy de Docker: https://www.udemy.com/docker-essentials/
- Documentação oficial: /https://docs.docker.com/get-started/