Post on 22-Jan-2018
O fim do “funciona na minha máquina”Desenvolvimento com Docker e Docker Compose
Sobre vocês
● Virtualização, quem ?
● Docker: Quem NÃO
ouviu falar ?
● Quem usa no dia a dia ?
● docker-compose ?
De onde veio isso ?● Começou como um projeto interno criado por
Solomon Hykes para uma empresa chamada dotCloud.
● O software estreou na PyCon de 2013.
● Ambiente de execução dos containers escrito em Go, uma linguagem criada pela Google que vem ganhando bastante popularidade.
● A dotCloud se tornou Docker Inc e fez o engine de containers open-source.
● Em 2016 o projeto recebeu grandes contribuições de empresas como Cisco, Google, Huawei, IBM, Microsoft e Rad Hat.
blog.docker.com
O problema da Virtualização● Lá no começo da computação comercial,
quando se começou a difundir a internet, era comum alocar uma máquina inteira para rodar uma aplicação. Independente da quantidade de recursos que esta consumia.
● Era muito comum ter um único servidor físico, com a porta da aplicação exposta e se quisesse rodar outra coisa, outra máquina era necessária.
● A coisa começou a mudar com o surgimento dos virtual hosts (Apache e cia…) Torkild Retvedt
Máquinas Virtuais● Com a popularização das Máquinas
virtuais, passou-se a utilizar os recursos de Hardware de uma forma mais inteligente.
● Utiliza-se um servidor que possui diversas instâncias de máquinas virtuais com OS distintos rodando as aplicações isoladas entre si.
● Além de facilitar a escalabilidade horizontal, o isolamento oferece mais segurança e mais flexibilidade na infraestrutura.
nickjanetakis.com
Containers● Apesar de consideráveis avanços com o
uso de máquinas virtuais. Ainda existe espaço para melhorias.
● Muitos recursos são desperdiçados alocando um OS distinto para cada máquina, quando na verdade só se deseja rodar uma aplicação.
● Os containers surgiram para remediar este gap e muito mais. nickjanetakis.com
Como ele faz isso ?● Utiliza por baixo uma funcionalidade do
Unix Kernel chamada namespaces, que se constitui numa camada de abstração que isola uma quantidade de recursos da máquina para os processos dentro dele.
● Estes recursos por sua vez são controlados via outra funcionalidade do Kernel chamada cgroups.
● Ao juntar isto com umas facilidades técnicas da linguagem Go, faz com que o docker hoje pareça funcionar “automagicamente”.
blog.docker.com
VantagensAlém de otimizar o uso de recursos o uso do docker oferece outras vantagens tais como:
● Ambientes Semelhantes
● Aplicação como Pacote Completo
● Padronização e Replicação
● Idioma comum entre Infraestrutura e Desenvolvimento
● Comunidade
● Escalabilidade - (Microserviços)
Nomenclatura Básica● Imagem
○ Criada em camadas○ Dockerfile
● Registro○ Publico○ Privado○ Próprio
● Container○ Parado○ Rodando
● Daemon (Engine)
● Volume
● Network
● Docker-compose○ service○ docker-compose.yml
DemonstraçãoStop talking and show me something your motherf*****
Conclusão● Acaba o funciona na minha máquina (no
mínimo a maioria dos casos).
● Muito versátil para usar no dia a dia. Sem ter que ficar instalado trocentas ferramentas compiladores e etc…
● Fácil de “deployar uma solução em container”.
● Funciona muito bem com servidores de integração contínua tais como Jenkins, Circle CI entre outros….
● Permite a criação de um catálogo de artefatos graças a criação de imagens.
● Possui soluções para uso em escala tais como Docker Swarm e Kubernetes.
● Infraestrutura no código.
● Como TUDO na tecnologia, docker resolve muitos problemas. Porém ele não é bala de prata pra tudo, tampouco a única solução para todos os seus problemas.
Perguntas ???
Obrigado!
Contato: lcastro.oliveira@gmail.com
Quer saber mais ? Leitura recomendada