$30 off During Our Annual Pro Sale. View Details »

Talk no Meetup Laravel SP 3

Talk no Meetup Laravel SP 3

Talk presented at Meetup Laravel SP #3 about docker from basics to docker orchestration

Video da apresentação:
https://youtu.be/mR2px-mKjd0

Wellington F. Silva

May 07, 2015
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. Overview

    View Slide

  8. Overview
    • Virtualization, LXC, VMs vs Containers
    !
    !

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. 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)

    View Slide

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


    View Slide

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


    View Slide

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


    View Slide

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


    View Slide

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

    View Slide

  18. LXC - Linux Containers
    • Instalando LXC: 

    sudo apt-get install lxc



    View Slide

  19. 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

    View Slide

  20. LXC - Linux Containers
    • Rodando:

    sudo lxc-start --name testando

    udhcpc: SIOCGIFINDEX: No such device

    Please press Enter to activate this console.

    /

    View Slide

  21. 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

    View Slide

  22. View Slide

  23. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. VMs vs Docker

    View Slide

  31. VMs vs Docker
    • Sobe rápido
    !
    !

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. 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

    View Slide

  37. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  41. 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)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  48. 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/

    View Slide

  49. 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/

    View Slide

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

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

    View Slide

  51. 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

    View Slide

  52. Docker Machine
    • Cria uma VM com
    boot2docker onde você
    quiser





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

    View Slide

  53. 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/

    View Slide

  54. 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/

    View Slide

  55. Docker Compose

    View Slide

  56. DOCKER COMPOSE
    e não composeeerrr...

    View Slide

  57. Docker Compose
    • Antigo fig.sh



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

    View Slide

  58. Docker Compose
    • Antigo fig.sh
    • Arquivo yml que descreve os
    microsistemas


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

    View Slide

  59. 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/

    View Slide

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



    View Slide

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


    View Slide

  62. 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)

    View Slide

  63. 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

    View Slide

  64. View Slide

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







    View Slide

  66. View Slide

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







    View Slide

  68. 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






    View Slide

  69. 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





    View Slide

  70. 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.



    View Slide

  71. 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

    View Slide

  72. Live Demo
    anything can go wrong now

    View Slide

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

    View Slide

  74. Q&A

    View Slide

  75. Slides

    View Slide