2. Quem sou eu?
● Aluno do BC&T
● Engenheiro de software no Elo7
● Instrutor na Caelum
3. Motivação
● Comprei um servidor e quero montar uma
empresa de hospedagem.
● Preciso hospedar o site de 3 clientes no meu
servidor Linux.
● Cada site utiliza uma stack diferente de
tecnologias, um utiliza Java, outro utiliza
Ruby e o último utiliza PHP.
5. Problemas
● Se um dos sites dos meus clientes receber
um volume muito grande de requisições a
performance dos sites dos outros clientes
ficará comprometida.
● Eu tenho que atualizar a versão do Java,
Ruby e PHP para todos os clientes de uma só
vez pois não tenho isolamento entre eles.
6. ● Vou usar máquinas virtuais.
● Consigo separação entre as stacks de
tecnologias.
● Consigo definir qual a capacidade de
hardware que posso dar para uma máquina
virtual.
● Ganho a possibilidade de executar outras
distribuições Linux e até servidores
Windows dentro da minha VM.
Solução
9. Outra solução
● Vou utilizar LinuX Containers, que é a
junção de três ferramentas do kernel do
Linux: cgroups, namespaces e chroot.
● Ganho performance pois não preciso
mais do hypervisor e dos sistemas
operacionais virtualizados.
● Continuo com o isolamento entre as
stacks dos sites.
● Consigo definir o quanto de hardware
cada site poderá consumir.
11. Mais um problema
● Se meu servidor parar e eu precisar recriar os
meus containers?
12. Solução final
● Agora sim! Vou usar Docker!
● Ele é escrito em Go, usa por baixo dos panos
LinuX Containers.
● Me permite criar imagens dos containers que
podem ser executadas quantas vezes eu quiser
14. Usando Docker em desenvolvimento
● Tenho um projeto Java que depende do
MySQL para executar.
● Posso usar o Docker para não precisar
instalar o MySQL no meu computador.
18. ● Como faço para gerenciar muitos containers?
● Eu preciso realmente usar um sistema
operacional “completo” se eu executar todos
meus sites dentro de containers?
Problemas para o meu “eu do futuro”