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

Webinar Train'hacker #1 Darkmira Aplicações distribuídas com Docker Swarm

Webinar Train'hacker #1 Darkmira Aplicações distribuídas com Docker Swarm

Palestra apresentada dia 07/02/2017 que introduz o que é o Docker e como ele se posiciona em comparação com as tradicionais maquinas virtuais, tem como principal intenção mostrar como uma aplicação pode ser levada de um ambiente local para um cluster de máquinas Docker usando somente o arquivo docker-compose.yml. O demo está disponível no GitHub em https://github.com/wsilva/train-hacker-docker-webinar

Wellington F. Silva

February 07, 2017
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

  1. APLICAÇÕES
    Distribuídas
    com Docker Swarm
    @_wsilva
    Wellington F. Silva

    View Slide

  2. • AKA: wsilva|boina|tom|fisi
    • Pai
    • Téc. Telecom
    • Programador
    • Instrutor
    • Escritor
    • DevOps

    View Slide

  3. AGENDA
    • Tipos de Virtualizações
    • Contêiner não é VM
    • O que é Docker
    • A aplicação
    • Docker Compose
    • Docker Swarm

    View Slide

  4. DISCLAIMER
    • Vamos mostrar como portar uma
    aplicação do ambiente de
    desenvolvimento para um ambiente
    em cluster
    • Apesar de o Swarm ser "production
    ready" RECOMENDAMOS alguns
    cuidados como teste contínuos de
    segurança, centralização de log,
    automatização de builds e alertas
    entre outros em ambientes de
    produção

    View Slide

  5. O que é o
    DOCKER
    ?

    View Slide

  6. View Slide

  7. View Slide

  8. –wsilva
    “Ferramenta para Virtualização
    no nível de Sistema Operacional”

    View Slide

  9. Tipos de
    VIRTUALIZAÇÃO

    View Slide

  10. TIPOS DE VIRTUALIZAÇÃO
    • Full Virtualization

    View Slide

  11. TIPOS DE VIRTUALIZAÇÃO
    • Full Virtualization
    • Partial Virtualization

    View Slide

  12. TIPOS DE VIRTUALIZAÇÃO
    • Full Virtualization
    • Partial Virtualization
    • Paravirtualization

    View Slide

  13. TIPOS DE VIRTUALIZAÇÃO
    • Full Virtualization
    • Partial Virtualization
    • Paravirtualization
    • OS Level Virtualization

    View Slide

  14. TIPOS DE VIRTUALIZAÇÃO
    • Full Virtualization
    • Partial Virtualization
    • Paravirtualization
    • OS Level Virtualization
    Docker

    View Slide

  15. Container
    NÃO
    é VM!

    View Slide

  16. SERVIDOR
    SERVIDOR
    HOST OS
    HOST OS
    CONTAINER ENGINE
    HYPERVISOR
    BINS/LIBS
    GUEST OS BINS/LIBS
    GUEST OS
    BINS/LIBS BINS/LIBS APP APP
    APP APP
    VM VM
    Container Container
    CONTÊINER vs VM

    View Slide

  17. SERVIDOR
    XEN
    UBUNTU LINUX
    DOCKER
    ENGINE
    BINS/LIBS MYSQL
    DEBIAN
    LINUX
    BINS/LIBS
    NGINX
    BINS/LIBS
    PHP-FPM
    DOCKER
    ENGINE
    WINDOWS
    2016 SERVER
    BINS/LIBS
    SQL SERVER
    DIFERENTES MAS NÃO EXCLUSIVOS

    View Slide

  18. Como
    Funciona?

    View Slide

  19. PROCESSOS
    +
    KERNEL NAMESPACES
    +
    CGROUPS

    View Slide

  20. PROCESSOS
    (AQUELES DO `PS AUX`)

    View Slide

  21. PROCESSOS
    • Processo Linux com PID
    atribuído

    View Slide

  22. PROCESSOS
    • Processo Linux com PID
    atribuído
    • Pode ser listados dentro do
    contêiner ou no host

    View Slide

  23. PROCESSOS
    • Processo Linux com PID
    atribuído
    • Pode ser listados dentro do
    contêiner ou no host
    • Dentro do container o PID=1

    View Slide

  24. KERNEL
    NAMESPACES
    (TUDO QUE O PROCESSO
    PODE VER)

    View Slide

  25. KERNEL NAMESPACES
    • IPC - interprocess communication

    View Slide

  26. KERNEL NAMESPACES
    • IPC - interprocess communication
    • PID - Processos

    View Slide

  27. KERNEL NAMESPACES
    • IPC - interprocess communication
    • PID - Processos
    • NET- rede

    View Slide

  28. KERNEL NAMESPACES
    • IPC - interprocess communication
    • PID - Processos
    • NET- rede
    • UTS - Unix timesharing system,
    recursos do kernel

    View Slide

  29. KERNEL NAMESPACES
    • IPC - interprocess communication
    • PID - Processos
    • NET- rede
    • UTS - Unix timesharing system,
    recursos do kernel
    • USER - usuários

    View Slide

  30. KERNEL NAMESPACES
    • IPC - interprocess communication
    • PID - Processos
    • NET- rede
    • UTS - Unix timesharing system,
    recursos do kernel
    • USER - usuários
    • MNT - filesystem e pontos de montagem

    View Slide

  31. CGROUPS
    (TUDO QUE O
    PROCESSO PODE
    USAR)

    View Slide

  32. CGROUPS
    • CPU

    View Slide

  33. CGROUPS
    • CPU
    • Memória

    View Slide

  34. CGROUPS
    • CPU
    • Memória
    • I/O em disco

    View Slide

  35. CGROUPS
    • CPU
    • Memória
    • I/O em disco
    • Interface de rede

    View Slide

  36. CGROUPS
    • CPU
    • Memória
    • I/O em disco
    • Interface de rede
    • Hardwares periféricos 

    (pen drives, cameras, etc)

    View Slide

  37. Docker
    Compose

    View Slide

  38. COMPOSE
    • Facilita montar ambientes de
    desenvolvimento complexos

    View Slide

  39. COMPOSE
    • Facilita montar ambientes de
    desenvolvimento complexos
    • Evolução do FIG (da Orchard)

    View Slide

  40. COMPOSE
    • Facilita montar ambientes de
    desenvolvimento complexos
    • Evolução do FIG (da Orchard)
    • Inspirado no Vagrant 

    [fig|docker-compose|vagrant] up

    View Slide

  41. COMPOSE
    • Facilita montar ambientes de
    desenvolvimento complexos
    • Evolução do FIG (da Orchard)
    • Inspirado no Vagrant 

    [fig|docker-compose|vagrant] up
    • Um arquivo de configuração para toda a
    stack (fig.yml|docker-compose.yml)

    View Slide

  42. COMPOSE
    • Facilita montar ambientes de
    desenvolvimento complexos
    • Evolução do FIG (da Orchard)
    • Inspirado no Vagrant 

    [fig|docker-compose|vagrant] up
    • Um arquivo de configuração para toda a
    stack (fig.yml|docker-compose.yml)
    • Um comando para levantar o ambiente

    View Slide

  43. Docker
    Machine

    View Slide

  44. MACHINE
    • Facilita criação e utilização de VMs
    rodando Docker tanto local quanto em
    nuvens

    View Slide

  45. MACHINE
    • Facilita criação e utilização de VMs
    rodando Docker tanto local quanto em
    nuvens
    • Cópia evoluída do Boot2docker CLI

    View Slide

  46. MACHINE
    • Facilita criação e utilização de VMs
    rodando Docker tanto local quanto em
    nuvens
    • Cópia evoluída do Boot2docker CLI
    • Local usa o Boot2docker ou RancherOS

    View Slide

  47. MACHINE
    • Facilita criação e utilização de VMs
    rodando Docker tanto local quanto em
    nuvens.
    • Cópia evoluída do Boot2docker CLI
    • Local usa o Boot2docker ou RancherOS
    • Drivers para VMWare Fusion,
    VirtualBox, Google Cloud, AWS,
    DigitalOcean, …

    View Slide

  48. Docker
    Swarm

    View Slide

  49. SWARM
    • Agrega máquinas rodando Docker em
    um cluster

    View Slide

  50. SWARM
    • Agrega máquinas rodando Docker em
    um cluster
    • Tolerante a falha e alta disponibilidade

    View Slide

  51. SWARM
    • Agrega máquinas rodando Docker em
    um cluster
    • Tolerante a falha e alta disponibilidade
    • Automático mas flexível ao fazer o
    schedule de contêineres

    View Slide

  52. SWARM
    • Agrega máquinas rodando Docker em
    um cluster
    • Tolerante a falha e alta disponibilidade
    • Automático mas flexível ao fazer o
    schedule de contêineres
    • Permite utilizar Scheduler e Service
    Discovery de terceiros

    View Slide

  53. SWARM
    • Agrega máquinas rodando Docker em
    um cluster
    • Tolerante a falha e alta disponibilidade
    • Automático mas flexível ao fazer o
    schedule de contêineres
    • Permite utilizar Scheduler e Service
    Discovery de terceiros
    • Built in no Docker desde a versão 1.12

    View Slide

  54. DEMO TIME
    https://github.com/wsilva/train-hacker-docker-webinar

    View Slide

  55. Docker

    View Slide

  56. Compose

    View Slide

  57. Swarm

    View Slide

  58. 17-20 Abril | Austin
    www.dockercon.com

    View Slide

  59. OBRIGADO
    Mais infos:
    • t.me/dockerbr
    • docker-
    br.herokuapp.com
    • bit.ly/curso-docker
    • meetup.com/docker-
    sao-paulo

    View Slide