Introdução ao
Quem sou eu?
● Aluno do BC&T
● Engenheiro de software no Elo7
● Instrutor na Caelum
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.
Motivação
HARDWARE
SISTEMA OPERACIONAL
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.
● 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
Solução
HARDWARE
SISTEMA OPERACIONAL
SISTEMA
OPERACIONAL
SISTEMA
OPERACIONAL
SISTEMA
OPERACIONAL
HYPERVISOR
Outros problemas
● Máquinas virtuais causam perda de performance
● Máquinas virtuais demoram para iniciar
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.
Motivação
HARDWARE
SISTEMA OPERACIONAL
Mais um problema
● Se meu servidor parar e eu precisar recriar os
meus containers?
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
LIVE CODING
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.
OUTRO LIVE CODING
Usando Docker em produção
● Vou resolver o famoso problema da
computação: “mas no meu computador
funcionou”.
Prometo que é o
ÚLTIMO LIVE CODING
● 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”
Soluções para o meu “eu do futuro”
Livros
https://www.casadocodigo.com.br/products/livro-docker
https://www.manning.com/books/docker-in-action
Cursos online
https://www.alura.com.br/curso-online-docker
Para saber mais
Live coding
https://github.com/newton-beck/palestra-bcc-docker
Slides
https://pt.slideshare.net/NewtonAngelini
Acesso aos recursos da palestra
Dúvidas!?
Danke schön

Introdução ao docker