talk no meetup laravelsp #3

75
Docker do básico à orquestração de containers Meetup de Laravel em São Paulo #3

Upload: wellington-silva

Post on 09-Aug-2015

40 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Talk no Meetup LaravelSP #3

Docker do básico à orquestração de containers

Meetup de Laravel em São Paulo #3

Page 2: Talk no Meetup LaravelSP #3

Sobre• $nome = 'Wellington F. Silva';

• $nick = ['_wsilva, 'tom', 'boina', 'fisi', 'iéié'];

• $work = 'developer';

• $background = '~2000';

• $titles = ['ZCE PHP 5.3', 'Técnico Telecom', 'Quase Bacharel SI - USP'];

• $contact = ['twitter' => '_wsilva'];

Page 3: Talk no Meetup LaravelSP #3

Quick Research

Já ouviu falar sobre:

• Virtualização (Vagrant, Virtual Box, VMWare, Xen,...)

!

!

Page 4: Talk no Meetup LaravelSP #3

Quick Research

Já ouviu falar sobre:

• Virtualização (Vagrant, Virtual Box, VMWare, Xen,...)

• LXC

!

Page 5: Talk no Meetup LaravelSP #3

Quick Research

Já ouviu falar sobre:

• Virtualização (Vagrant, Virtual Box, VMWare, Xen,...)

• LXC

• Docker

Page 6: Talk no Meetup LaravelSP #3

Quick Research

Já ouviu falar sobre:

• Virtualização (Vagrant, Virtual Box, VMWare, Xen,...)

• LXC

• Docker

• Orquestração de containers

Page 7: Talk no Meetup LaravelSP #3

Overview

Page 8: Talk no Meetup LaravelSP #3

Overview

• Virtualization, LXC, VMs vs Containers

!

!

Page 9: Talk no Meetup LaravelSP #3

Overview

• Virtualization, LXC, VMs vs Containers

• O que é Docker

!

Page 10: Talk no Meetup LaravelSP #3

Overview

• Virtualization, LXC, VMs vs Containers

• O que é Docker

• Uso Básico

Page 11: Talk no Meetup LaravelSP #3

Overview

• Virtualization, LXC, VMs vs Containers

• O que é Docker

• Uso Básico

• Orquestração de Containers

Page 12: Talk no Meetup LaravelSP #3

Virtualização

Um sistema operacional completo (Guest) rodando sobre o sistema operacional que está rodando na máquina física (Host)

Opinião pessoal (mais defin. ver no google)

Page 13: Talk no Meetup LaravelSP #3

LXC - Linux Containers

• Isolamento de processo (chroot)

!

!

!

Page 14: Talk no Meetup LaravelSP #3

LXC - Linux Containers

• Isolamento de processo (chroot)

• Isolamento de rede

!

!

Page 15: Talk no Meetup LaravelSP #3

LXC - Linux Containers

• Isolamento de processo (chroot)

• Isolamento de rede

• Limitação de memória

!

Page 16: Talk no Meetup LaravelSP #3

LXC - Linux Containers

• Isolamento de processo (chroot)

• Isolamento de rede

• Limitação de memória

• Isolamento de File System

Page 17: Talk no Meetup LaravelSP #3

LXC - Linux Containers

• Isolamento de processo (chroot)

• Isolamento de rede

• Limitação de memória

• Isolamento de File System

• Dificuldade de compartilhamento de volumes

Page 18: Talk no Meetup LaravelSP #3

LXC - Linux Containers

• Instalando LXC: sudo apt-get install lxc

Page 19: Talk no Meetup LaravelSP #3

LXC - Linux Containers

• Instalando LXC: sudo apt-get install lxc

• Criando um container busybox (minimalista): sudo lxc-create --template busybox --name testando setting root password to "root"Password for 'root' changed

Page 20: Talk no Meetup LaravelSP #3

LXC - Linux Containers

• Rodando:sudo lxc-start --name testandoudhcpc: SIOCGIFINDEX: No such devicePlease press Enter to activate this console. /

Page 21: Talk no Meetup LaravelSP #3

LXC - Linux Containers

• Rodando:sudo lxc-start --name testandoudhcpc: SIOCGIFINDEX: No such devicePlease press Enter to activate this console. /

• Parando (tem que usar um outro terminal no host): sudo lxc-stop --name testando

Page 22: Talk no Meetup LaravelSP #3
Page 23: Talk no Meetup LaravelSP #3
Page 24: Talk no Meetup LaravelSP #3

Docker

• Copy-on-write (AUFS)

!

!

!

!

Page 25: Talk no Meetup LaravelSP #3

Docker

• Copy-on-write (AUFS)

• Logging (stdout/stderr/stdin)

!

!

!

Page 26: Talk no Meetup LaravelSP #3

Docker

• Copy-on-write (AUFS)

• Logging (stdout/stderr/stdin)

• Change management (imagens)

!

!

Page 27: Talk no Meetup LaravelSP #3

Docker

• Copy-on-write (AUFS)

• Logging (stdout/stderr/stdin)

• Change management (imagens)

• Automatic build (Dockerfile)

!

Page 28: Talk no Meetup LaravelSP #3

Docker

• Copy-on-write (AUFS)

• Logging (stdout/stderr/stdin)

• Change management (imagens)

• Automatic build (Dockerfile)

• Component re-use (FROM: image)

Page 29: Talk no Meetup LaravelSP #3

Docker

• Copy-on-write (AUFS)

• Logging (stdout/stderr/stdin)

• Change management (imagens)

• Automatic build (Dockerfile)

• Component re-use (FROM: image)

• Sharing (dockerhub/registry)

Page 30: Talk no Meetup LaravelSP #3

VMs vs Docker

Page 31: Talk no Meetup LaravelSP #3

VMs vs Docker

• Sobe rápido

!

!

Page 32: Talk no Meetup LaravelSP #3

VMs vs Docker

• Sobe rápido

• Padronização

!

Page 33: Talk no Meetup LaravelSP #3

VMs vs Docker

• Sobe rápido

• Padronização

• Fácil replicação

Page 34: Talk no Meetup LaravelSP #3

VMs vs Docker

• Sobe rápido

• Padronização

• Fácil replicação

• Melhor utilização de recursos

Page 35: Talk no Meetup LaravelSP #3

VMs vs Docker

• Sobe rápido

• Padronização

• Fácil replicação

• Melhor utilização de recursos

• Overhead de IO

!

Page 36: Talk no Meetup LaravelSP #3

VMs vs Docker

• Sobe rápido

• Padronização

• Fácil replicação

• Melhor utilização de recursos

• Overhead de IO

• Não tão isolado

Page 37: Talk no Meetup LaravelSP #3

VMs vs Docker

• Sobe rápido

• Padronização

• Fácil replicação

• Melhor utilização de recursos

• Overhead de IO

• Não tão isolado

• Só Linux

Page 38: Talk no Meetup LaravelSP #3

Tips

• Não é VM, é CONTAINER

!

!

Page 39: Talk no Meetup LaravelSP #3

Tips

• Não é VM, é CONTAINER

• Porque container (padrão de transporte)

!

Page 40: Talk no Meetup LaravelSP #3

Tips

• Não é VM, é CONTAINER

• Porque container (padrão de transporte)

• Conceito de Guest e Host, também vale.

Page 41: Talk no Meetup LaravelSP #3

Tips

• Não é VM, é CONTAINER

• Porque container (padrão de transporte)

• Conceito de Guest e Host, também vale.

• Imagem vs Container (imagem é estática, container é o que roda). Similar a VM e imagem da VM (AMI)

Page 42: Talk no Meetup LaravelSP #3

Basics• docker pull

!

!

!

!

!

!

Tutorial de introdução (10min): https://www.docker.com/tryit/

Page 43: Talk no Meetup LaravelSP #3

Basics• docker pull

• docker ps

!

!

!

!

!

Tutorial de introdução (10min): https://www.docker.com/tryit/

Page 44: Talk no Meetup LaravelSP #3

Basics• docker pull

• docker ps

• docker images

!

!

!

!

Tutorial de introdução (10min): https://www.docker.com/tryit/

Page 45: Talk no Meetup LaravelSP #3

Basics• docker pull

• docker ps

• docker images

• docker run

!

!

!

Tutorial de introdução (10min): https://www.docker.com/tryit/

Page 46: Talk no Meetup LaravelSP #3

Basics• docker pull

• docker ps

• docker images

• docker run

• docker exec

!

!

Tutorial de introdução (10min): https://www.docker.com/tryit/

Page 47: Talk no Meetup LaravelSP #3

Basics• docker pull

• docker ps

• docker images

• docker run

• docker exec

• docker commit

!

Tutorial de introdução (10min): https://www.docker.com/tryit/

Page 48: Talk no Meetup LaravelSP #3

Basics• docker pull

• docker ps

• docker images

• docker run

• docker exec

• docker commit

• docker inspect

Tutorial de introdução (10min): https://www.docker.com/tryit/

Page 49: Talk no Meetup LaravelSP #3

Basics• docker pull

• docker ps

• docker images

• docker run

• docker exec

• docker commit

• docker inspect

• docker push

Tutorial de introdução (10min): https://www.docker.com/tryit/

Page 50: Talk no Meetup LaravelSP #3

Instalation

• Debian, Arch, Fedora, CentOS, AWS EC2, Mac OS X, Suse, Microsoft Ubuntu, Microsoft Windows, etc...

https://docs.docker.com/installation/#installation

Page 51: Talk no Meetup LaravelSP #3

Instalation

• Debian, Arch, Fedora, CentOS, AWS EC2, Mac OS X, Suse, Microsoft Ubuntu, Microsoft Windows, etc...

• Mac OS X e Microsoft Windows (boot2docker-vm)

https://docs.docker.com/installation/#installation

Page 52: Talk no Meetup LaravelSP #3

Docker Machine

• Cria uma VM com boot2docker onde você quiser

https://docs.docker.com/machine/

Page 53: Talk no Meetup LaravelSP #3

Docker Machine

• Cria uma VM com boot2docker onde você quiser

• Amazon Web Services, Digital Ocean, Google Compute Engine, IBM Softlayer, Microsoft Azure, Openstack, etc...

https://docs.docker.com/machine/

Page 54: Talk no Meetup LaravelSP #3

Docker Machine

• Cria uma VM com boot2docker onde você quiser

• Amazon Web Services, Digital Ocean, Google Compute Engine, IBM Softlayer, Microsoft Azure, Openstack, etc...

• Preparado para criação de clusters (Swarms)

https://docs.docker.com/machine/

Page 55: Talk no Meetup LaravelSP #3

Docker Compose

Page 56: Talk no Meetup LaravelSP #3

DOCKER COMPOSEe não composeeerrr...

Page 57: Talk no Meetup LaravelSP #3

Docker Compose

• Antigo fig.sh

https://docs.docker.com/compose/

Page 58: Talk no Meetup LaravelSP #3

Docker Compose

• Antigo fig.sh

• Arquivo yml que descreve os microsistemas

https://docs.docker.com/compose/

Page 59: Talk no Meetup LaravelSP #3

Docker Compose

• Antigo fig.sh

• Arquivo yml que descreve os microsistemas

• Comandos: build, help, kill, logs, port, ps, pull, rm, run, scale, start, stop, up

https://docs.docker.com/compose/

Page 60: Talk no Meetup LaravelSP #3

Why Compose?

• Imagine que você entrou no E-Bahya

Page 61: Talk no Meetup LaravelSP #3

Why Compose?

• Imagine que você entrou no E-Bahya

• Maior e-commerce da África Latina com trocentos acessos por minutos

Page 62: Talk no Meetup LaravelSP #3

Why Compose?

• Imagine que você entrou no E-Bahya

• Maior e-commerce da África Latina com trocentos acessos por minutos

• Cada serviço do E-Bahya roda em um servidor na nuvem Alazão Jeg Servers (escalável de acordo com a qtde de acessos - sempre entre 5 e 10 instâncias rodando)

Page 63: Talk no Meetup LaravelSP #3

Why Compose?

• Imagine que você entrou no E-Bahya

• Maior e-commerce da África Latina com trocentos acessos por minutos

• Cada serviço do E-Bahya roda em um servidor na nuvem Alazão Jeg Servers (escalável de acordo com a qtde de acessos - sempre entre 5 e 10 instâncias rodando)

• Serviços se comunicam entre si via rede privada

Page 64: Talk no Meetup LaravelSP #3
Page 65: Talk no Meetup LaravelSP #3

Why Compose?

Como você monta o ambiente na sua máquina?

Page 66: Talk no Meetup LaravelSP #3
Page 67: Talk no Meetup LaravelSP #3

Why Compose?

Como você monta o ambiente na sua máquina?

a) vou instalando os pacotes: do banco, nginx / apache, etc

Page 68: Talk no Meetup LaravelSP #3

Why Compose?

Como você monta o ambiente na sua máquina?

a) vou instalando os pacotes: do banco, nginx / apache, etcb) vou instalando mas na versão do site: nginx 1.2.1, php 5.6.1

Page 69: Talk no Meetup LaravelSP #3

Why Compose?

Como você monta o ambiente na sua máquina?

a) vou instalando os pacotes: do banco, nginx / apache, etcb) vou instalando mas na versão do site: nginx 1.2.1, php 5.6.1 c) vou levantar um virtualbox com todos os serviços instalados

Page 70: Talk no Meetup LaravelSP #3

Why Compose?

Como você monta o ambiente na sua máquina?

a) vou instalando os pacotes: do banco, nginx / apache, etcb) vou instalando mas na versão do site: nginx 1.2.1, php 5.6.1 c) vou levantar um virtualbox com todos os serviços instalados d) manjo tudo de docker vou montar um container com a distro linux que está nos servidores e os pacotes nas versões certas.

Page 71: Talk no Meetup LaravelSP #3

Why Compose?

Como você monta o ambiente na sua máquina?

a) vou instalando os pacotes: do banco, nginx / apache, etcb) vou instalando mas na versão do site: nginx 1.2.1, php 5.6.1 c) vou levantar um virtualbox com todos os serviços instalados d) manjo tudo de docker vou montar um container com a distro linux que está nos servidores e os pacotes nas versões certas. e) um container para cada serviço: um pro banco, um para a sessão, um pro servidor web, um para o elastic search, um para o frontend e um para o backend e assim por diante

Page 72: Talk no Meetup LaravelSP #3

Live Demoanything can go wrong now

Page 73: Talk no Meetup LaravelSP #3

Fonteshttps://github.com/wsilva/meetup-laravel

Page 74: Talk no Meetup LaravelSP #3

Q&A

Page 75: Talk no Meetup LaravelSP #3

Slides