Estudo de contêineres
Conceitos gerais
Contêiner
- Ambiente isolado que empacota a aplicação e suas dependências;
- Compartilham o kernel do sistema operacional de gerência;
- Inicia instantaneamente e usa menos CPU e memória RAM que uma máquina virtual;
- O foco é a aplicação que se deseja rodar;
- É portátil pois contém a aplicação com tudo que a mesma necessita para funcionar;
- Pode ser facilmente replicado;
- Permite a execução de diversos ambientes em um mesmo sistema, não necessitando ter diversos sistemas operacionais completos para isso;
Máquina Virtual
- Abstrai (virtualiza) o hardware;
- O hypervisor permite que múltiplas máquinas virtuais sejam executadas em uma máquina física;
- Cada máquina virtual contém uma cópia completa do sistema operacional, binários e bibliotecas, consumindo giga bytes em espaço em armazenamento, além de memória RAM e CPU;
- O foco está na virtualização completa de um ambiente físico;
- Tende a ser mais lento em decorrência da virtualização de hardware;
Contêiner versus Máquina Virtual
Sistemas Operacionais
Com relação aos sistemas operacionais, destacam-se o Container Linux by CoreOS e o RancherOS, ambos com enfoque em contêineres. Há também o Atomic OS, que é um projeto que usa o CentOS como base. Outros sistemas Linux como o Debian, Ubuntu, Fedora, ArchLinux também são ótimos sistemas para desktop que possam servir como hospedeiro de contêineres. No entanto, o Docker pode ser instalado em sistemas Microsoft Windows® e MacOS®, sendo que os contêineres a serem utilizados nesses sistemas deve possuir aplicações que executem nesses sistemas, ou seja, um contêiner para Microsoft Windows® deve conter os binários compilados para o sistema. A situação no MacOS® é análoga.
Aqui o foco será nos sistemas operacionais CoreOS e RancherOS, visto que ambos são otimizados para trabalhem com contêineres e também em cluster.