Deploying Docker Containers Hugo Arraes Henley hugohenley@id.uff.br
Quem sou eu? Arquiteto de Soluções da STI Engenheiro de Software Apaixonado por tecnologia Nerd :)
#quemnunca? • Perdeu horas tentando descobrir porque o seu software não funcionava em produção e era aquela lib que faltava… • Ficou dias tentando configurar a máquina para rodar o projeto da empresa • Contratou um web designer e teve que ajudá-lo a instalar até o banco de dados da sua app. Que sentido faz?
Desenvolvedores devem… • Ter mais tempo para focar no negócio! • Entregar software que funciona sem dificuldades e que sejam independentes do ambiente • Deployar, deployar, deployar…
Suas aplicações devem… • Escalar com facilidade • Ser facilmente deployáveis • Rodar em ambientes isolados
[http://12factor.net/dev-prod-parity]
Qual a solução?
Docker? Containers?
Um paralelo com a Engenharia …
Solução…
O deploy é feito em containers leves e auto-suficientes.
#comofaz?
Docker? • Permite criar containers leves e auto-suficientes que podem conter qualquer tipo de aplicação/serviço • Se é possível rodar em um Kernel Linux, pode rodar no Docker ! • Não é uma Virtual Machine! • É um Virtual Environment! • Escrito em Go :)
Virtual Machines Hypervisor Host OS Server App A Bin/Libs Guest OS App B Bin/Libs Guest OS
Virtual Environments App A App B Docker Engine Host OS Server Bin/Libs Bin/Libs
Há um ganho incrível de performance.
Performance Quase não há overhead! [An Updated Performance Comparison of Virtual Machines and Linux Containers]
Deploy
Fluxo Padrão Your machine Server
Deploying Containers Ambiente de Desenvolvimento = Ambiente de Produção Ambiente de Desenvolvimento = Ambiente de Produção Ambiente de Desenvolvimento = Ambiente de Produção Ambiente de Desenvolvimento = Ambiente de Produção Docker Engine Host OS Server Your Machine Server
Como faço pra rodar o meu Linux Container?
1docker pull ubuntu
docker run -i -t ubuntu:14.04 /bin/bash 2
Só isso?
Onde eu configuro o meu container?
Dockerfile
Dockerizing a Redis Service Dockerfile
Dockerizing a MySQL Database
Criando o container MySQL
Observações • Tempo de boot do container? • As migrações rodam dentro do container! Você não precisa ter o MySQL instalado na sua máquina • Possibilidade de criar vários containers, cada um com um serviço • Ganhamos isolamento e velocidade!
Fácil escalar… … …
Linking Containers Redis Server App / Linux
Onde eu guardo os meus containers? [https://hub.docker.com/]
Quem está usando?
Onde fazer deploy?
Cloud Computing
Elastic Beanstalk • Serviço que permite deploy de forma fácil e rápida de aplicações Java, .NET, PHP, Node.js, Python, Ruby e Docker • Suporta Apache, Nginx, Passenger e IIS • Você faz upload do seu código • O Elastic Beanstalk se encarrega do provisionamento e monitoramento da sua aplicação
O que é necessário? • Dockerfile • Dockerrun.aws.json
Dockerrun.aws.json
Testando… [https://github.com/awslabs/eb-py-flask-signup/tree/docker]
1 git clone git@github.com:awslabs/eb-py-flask-signup.git 2 eb init 3 eb start 4 eb push
[http://eb-docker-env-vbxvmms6fz.elasticbeanstalk.com]
DESAFIO!
Rodem seu próximo projeto em containers na AWS! :)
Dica para os alunos…
E o mais importante… O mercado quer solucionadores de problemas!
Atenção! Descontos!
[https://www.jetbrains.com/student/]
[https://education.github.com/pack]
Estamos contratando!
> 40 sistemas em produção 8 sistemas em desenvolvimento
Horário Flexível! Aprendizado constante Tecnologia de Ponta
12 e 13 de Novembro
Empresas confirmadas
Dúvidas?
Obrigado!
http://github.com/hugohenley Hugo Henley hugohenley http://hugohenley.github.io hugohenley@id.uff.br

Deploying Docker Containers