82
Deploying Docker Containers Hugo Arraes Henley [email protected]

Deploying Docker Containers

Embed Size (px)

DESCRIPTION

Introducing Docker Containers and Deploying them to Amazon AWS Elastic Beanstalk

Citation preview

Page 1: Deploying Docker Containers

Deploying Docker Containers

Hugo Arraes Henley [email protected]

Page 2: Deploying Docker Containers

Quem sou eu?

Arquiteto de Soluções da STI

Engenheiro de Software

Nerd :)

Apaixonado por tecnologia

Page 3: Deploying Docker Containers
Page 4: Deploying Docker Containers

#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?

Page 5: Deploying Docker Containers

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…

Page 6: Deploying Docker Containers

Suas aplicações devem…

• Escalar com facilidade

• Ser facilmente deployáveis

• Rodar em ambientes isolados

Page 7: Deploying Docker Containers

[http://12factor.net/dev-prod-parity]

Page 8: Deploying Docker Containers

Qual a solução?

Page 9: Deploying Docker Containers

Docker? Containers?

Page 10: Deploying Docker Containers

Um paralelo com a Engenharia …

Page 11: Deploying Docker Containers
Page 12: Deploying Docker Containers
Page 13: Deploying Docker Containers

Solução…

Page 14: Deploying Docker Containers
Page 15: Deploying Docker Containers
Page 16: Deploying Docker Containers
Page 17: Deploying Docker Containers
Page 18: Deploying Docker Containers

O deploy é feito em containers leves e auto-suficientes.

Page 19: Deploying Docker Containers
Page 20: Deploying Docker Containers

#comofaz?

Page 21: Deploying Docker Containers
Page 22: Deploying Docker Containers

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 :)

Page 23: Deploying Docker Containers
Page 24: Deploying Docker Containers

Virtual Machines

Server

Host OS

Hypervisor

Guest OS

Bin/Libs

App A

Guest OS

Bin/Libs

App B

Page 25: Deploying Docker Containers

Virtual Environments

Server

Host OS

Docker Engine

Bin/Libs

App A

Bin/Libs

App B

Page 26: Deploying Docker Containers

Há um ganho incrível de performance.

Page 27: Deploying Docker Containers

Performance

[An Updated Performance Comparison of Virtual Machines and Linux Containers]

Quase não há overhead!

Page 28: Deploying Docker Containers

Deploy

Page 29: Deploying Docker Containers

Fluxo Padrão

Your machineServer

Page 30: Deploying Docker Containers
Page 31: Deploying Docker Containers

Deploying Containers

Server

Host OS

Docker Engine

Your Machine Server

Ambiente de Desenvolvimento = Ambiente de ProduçãoAmbiente de Desenvolvimento = Ambiente de ProduçãoAmbiente de Desenvolvimento = Ambiente de ProduçãoAmbiente de Desenvolvimento = Ambiente de Produção

Page 32: Deploying Docker Containers

Como faço pra rodar o meu Linux Container?

Page 33: Deploying Docker Containers

1docker pull ubuntu

Page 34: Deploying Docker Containers

docker run -i -t ubuntu:14.04 /bin/bash2

Page 35: Deploying Docker Containers
Page 36: Deploying Docker Containers

Só isso?

Page 37: Deploying Docker Containers
Page 38: Deploying Docker Containers

Onde eu configuro o meu container?

Page 39: Deploying Docker Containers

Dockerfile

Page 40: Deploying Docker Containers

Dockerizing a Redis Service

Dockerfile

Page 41: Deploying Docker Containers

Dockerizing a MySQL Database

Page 42: Deploying Docker Containers

Criando o container MySQL

Page 43: Deploying Docker Containers
Page 44: Deploying Docker Containers

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!

Page 45: Deploying Docker Containers

Fácil escalar…

Page 46: Deploying Docker Containers

Linking Containers

Redis Server App / Linux

Page 47: Deploying Docker Containers

Onde eu guardo os meus containers?

[https://hub.docker.com/]

Page 48: Deploying Docker Containers
Page 49: Deploying Docker Containers

Quem está usando?

Page 50: Deploying Docker Containers

Onde fazer deploy?

Page 51: Deploying Docker Containers

Cloud Computing

Page 52: Deploying Docker Containers
Page 53: Deploying Docker Containers
Page 54: Deploying Docker Containers
Page 55: Deploying Docker Containers

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

Page 56: Deploying Docker Containers
Page 57: Deploying Docker Containers
Page 58: Deploying Docker Containers

• Dockerfile

• Dockerrun.aws.json

O que é necessário?

Page 59: Deploying Docker Containers

Dockerrun.aws.json

Page 60: Deploying Docker Containers

Testando…

[https://github.com/awslabs/eb-py-flask-signup/tree/docker]

Page 61: Deploying Docker Containers

1 git clone [email protected]:awslabs/eb-py-flask-signup.git

2 eb init

3 eb start

4 eb push

Page 62: Deploying Docker Containers
Page 63: Deploying Docker Containers
Page 64: Deploying Docker Containers

[http://eb-docker-env-vbxvmms6fz.elasticbeanstalk.com]

Page 65: Deploying Docker Containers
Page 66: Deploying Docker Containers

DESAFIO!

Page 67: Deploying Docker Containers

Rodem seu próximo projeto em containers na AWS! :)

Page 68: Deploying Docker Containers

Dica para os alunos…

Page 69: Deploying Docker Containers

E o mais importante…

O mercado quer solucionadores de problemas!

Page 70: Deploying Docker Containers
Page 71: Deploying Docker Containers

Atenção! Descontos!

Page 72: Deploying Docker Containers

[https://www.jetbrains.com/student/]

Page 73: Deploying Docker Containers

[https://education.github.com/pack]

Page 74: Deploying Docker Containers

Estamos contratando!

Page 75: Deploying Docker Containers

8 sistemas em desenvolvimento> 40 sistemas em produção

Page 76: Deploying Docker Containers

Horário Flexível!

Aprendizado constante

Tecnologia de Ponta

Page 77: Deploying Docker Containers
Page 78: Deploying Docker Containers

12 e 13 de Novembro

Page 79: Deploying Docker Containers

Empresas confirmadas

Page 80: Deploying Docker Containers

Dúvidas?

Page 81: Deploying Docker Containers

Obrigado!

Page 82: Deploying Docker Containers

http://github.com/hugohenley

Hugo Henley

hugohenley

[email protected]

http://hugohenley.github.io