Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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'];

Slide 3

Slide 3 text

Quick Research Já ouviu falar sobre: • Virtualização (Vagrant, Virtual Box, VMWare, Xen,...) ! !

Slide 4

Slide 4 text

Quick Research Já ouviu falar sobre: • Virtualização (Vagrant, Virtual Box, VMWare, Xen,...) • LXC !

Slide 5

Slide 5 text

Quick Research Já ouviu falar sobre: • Virtualização (Vagrant, Virtual Box, VMWare, Xen,...) • LXC • Docker

Slide 6

Slide 6 text

Quick Research Já ouviu falar sobre: • Virtualização (Vagrant, Virtual Box, VMWare, Xen,...) • LXC • Docker • Orquestração de containers

Slide 7

Slide 7 text

Overview

Slide 8

Slide 8 text

Overview • Virtualization, LXC, VMs vs Containers ! !

Slide 9

Slide 9 text

Overview • Virtualization, LXC, VMs vs Containers • O que é Docker !

Slide 10

Slide 10 text

Overview • Virtualization, LXC, VMs vs Containers • O que é Docker • Uso Básico

Slide 11

Slide 11 text

Overview • Virtualization, LXC, VMs vs Containers • O que é Docker • Uso Básico • Orquestração de Containers

Slide 12

Slide 12 text

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)

Slide 13

Slide 13 text

LXC - Linux Containers • Isolamento de processo (chroot) ! ! ! 
 


Slide 14

Slide 14 text

LXC - Linux Containers • Isolamento de processo (chroot) • Isolamento de rede ! ! 
 


Slide 15

Slide 15 text

LXC - Linux Containers • Isolamento de processo (chroot) • Isolamento de rede • Limitação de memória ! 
 


Slide 16

Slide 16 text

LXC - Linux Containers • Isolamento de processo (chroot) • Isolamento de rede • Limitação de memória • Isolamento de File System 
 


Slide 17

Slide 17 text

LXC - Linux Containers • Isolamento de processo (chroot) • Isolamento de rede • Limitação de memória • Isolamento de File System • Dificuldade de compartilhamento de volumes

Slide 18

Slide 18 text

LXC - Linux Containers • Instalando LXC: 
 sudo apt-get install lxc 
 
 


Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

LXC - Linux Containers • Rodando:
 sudo lxc-start --name testando
 udhcpc: SIOCGIFINDEX: No such device
 Please press Enter to activate this console.
 / 


Slide 21

Slide 21 text

LXC - Linux Containers • Rodando:
 sudo lxc-start --name testando
 udhcpc: SIOCGIFINDEX: No such device
 Please press Enter to activate this console.
 / • Parando (tem que usar um outro terminal no host):
 sudo lxc-stop --name testando

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

Docker • Copy-on-write (AUFS) ! ! ! !

Slide 25

Slide 25 text

Docker • Copy-on-write (AUFS) • Logging (stdout/stderr/stdin) ! ! !

Slide 26

Slide 26 text

Docker • Copy-on-write (AUFS) • Logging (stdout/stderr/stdin) • Change management (imagens) ! !

Slide 27

Slide 27 text

Docker • Copy-on-write (AUFS) • Logging (stdout/stderr/stdin) • Change management (imagens) • Automatic build (Dockerfile) !

Slide 28

Slide 28 text

Docker • Copy-on-write (AUFS) • Logging (stdout/stderr/stdin) • Change management (imagens) • Automatic build (Dockerfile) • Component re-use (FROM: image)

Slide 29

Slide 29 text

Docker • Copy-on-write (AUFS) • Logging (stdout/stderr/stdin) • Change management (imagens) • Automatic build (Dockerfile) • Component re-use (FROM: image) • Sharing (dockerhub/registry)

Slide 30

Slide 30 text

VMs vs Docker

Slide 31

Slide 31 text

VMs vs Docker • Sobe rápido ! ! 


Slide 32

Slide 32 text

VMs vs Docker • Sobe rápido • Padronização ! 


Slide 33

Slide 33 text

VMs vs Docker • Sobe rápido • Padronização • Fácil replicação 


Slide 34

Slide 34 text

VMs vs Docker • Sobe rápido • Padronização • Fácil replicação • Melhor utilização de recursos

Slide 35

Slide 35 text

VMs vs Docker • Sobe rápido • Padronização • Fácil replicação • Melhor utilização de recursos • Overhead de IO !

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

Tips • Não é VM, é CONTAINER ! ! 


Slide 39

Slide 39 text

Tips • Não é VM, é CONTAINER • Porque container (padrão de transporte) ! 


Slide 40

Slide 40 text

Tips • Não é VM, é CONTAINER • Porque container (padrão de transporte) • Conceito de Guest e Host, também vale. 


Slide 41

Slide 41 text

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)

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

Basics • docker pull • docker ps ! ! ! ! ! Tutorial de introdução (10min): https://www.docker.com/tryit/

Slide 44

Slide 44 text

Basics • docker pull • docker ps • docker images ! ! ! ! Tutorial de introdução (10min): https://www.docker.com/tryit/

Slide 45

Slide 45 text

Basics • docker pull • docker ps • docker images • docker run ! ! ! Tutorial de introdução (10min): https://www.docker.com/tryit/

Slide 46

Slide 46 text

Basics • docker pull • docker ps • docker images • docker run • docker exec ! ! Tutorial de introdução (10min): https://www.docker.com/tryit/

Slide 47

Slide 47 text

Basics • docker pull • docker ps • docker images • docker run • docker exec • docker commit ! Tutorial de introdução (10min): https://www.docker.com/tryit/

Slide 48

Slide 48 text

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/

Slide 49

Slide 49 text

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/

Slide 50

Slide 50 text

Instalation • Debian, Arch, Fedora, CentOS, AWS EC2, Mac OS X, Suse, Microsoft Ubuntu, Microsoft Windows, etc... 
 https://docs.docker.com/installation/#installation

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

Docker Machine • Cria uma VM com boot2docker onde você quiser 
 
 
 
 
 https://docs.docker.com/machine/

Slide 53

Slide 53 text

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/

Slide 54

Slide 54 text

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/

Slide 55

Slide 55 text

Docker Compose

Slide 56

Slide 56 text

DOCKER COMPOSE e não composeeerrr...

Slide 57

Slide 57 text

Docker Compose • Antigo fig.sh 
 
 
 https://docs.docker.com/compose/

Slide 58

Slide 58 text

Docker Compose • Antigo fig.sh • Arquivo yml que descreve os microsistemas 
 
 https://docs.docker.com/compose/

Slide 59

Slide 59 text

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/

Slide 60

Slide 60 text

Why Compose? • Imagine que você entrou no E-Bahya 
 
 


Slide 61

Slide 61 text

Why Compose? • Imagine que você entrou no E-Bahya • Maior e-commerce da África Latina com trocentos acessos por minutos 
 


Slide 62

Slide 62 text

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)

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

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


Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

Why Compose? Como você monta o ambiente na sua máquina? a) vou instalando os pacotes: do banco, nginx / apache, etc
 
 
 
 
 
 


Slide 68

Slide 68 text

Why Compose? Como você monta o ambiente na sua máquina? a) vou instalando os pacotes: do banco, nginx / apache, etc
 b) vou instalando mas na versão do site: nginx 1.2.1, php 5.6.1
 
 
 
 
 


Slide 69

Slide 69 text

Why Compose? Como você monta o ambiente na sua máquina? a) vou instalando os pacotes: do banco, nginx / apache, etc
 b) 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
 
 
 
 


Slide 70

Slide 70 text

Why Compose? Como você monta o ambiente na sua máquina? a) vou instalando os pacotes: do banco, nginx / apache, etc
 b) 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.
 
 


Slide 71

Slide 71 text

Why Compose? Como você monta o ambiente na sua máquina? a) vou instalando os pacotes: do banco, nginx / apache, etc
 b) 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

Slide 72

Slide 72 text

Live Demo anything can go wrong now

Slide 73

Slide 73 text

Fontes https://github.com/wsilva/meetup-laravel

Slide 74

Slide 74 text

Q&A

Slide 75

Slide 75 text

Slides