Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Enfrentando o Docker em ambientes de desenvolvimento

Enfrentando o Docker em ambientes de desenvolvimento

Esta palestra descreve as semelhanças entre o esquema de virtualização comum e a virtualização com containers, introduz o Docker Engine e suas ferramentas como meio de agilizar e padronizar a configuração de ambientes de desenvolvimento.

Sérgio Vilar

March 16, 2016
Tweet

More Decks by Sérgio Vilar

Other Decks in Programming

Transcript

  1. FNBNCJFOUFTEFEFTFOWPMWJNFOUP
    &OGSFOUBOEPP%PDLFS

    View Slide

  2. 4ʡSHJP7JMBS
    4PGUXBSF&OHJOFFS

    View Slide

  3. View Slide

  4. 1BESPOJ[BÇÄPEPBNCJFOUFEF
    EFTFOWPMWJNFOUP

    View Slide

  5. View Slide

  6. 7JSUVBMJ[BÇÄP

    View Slide

  7. 7JSUVBMJ[BÇÄP
    Host OS (Windows, Linux, OSX)
    VM A (Guest OS) VM B (Guest OS)
    Virtualization provider (VMWare, Virtualbox)
    Dependencies (SO, bins) Dependencies (SO, bins)
    App A App B
    "NCJFOUF

    QBESPOJ[BEP

    View Slide

  8. Docker?

    View Slide

  9. &OHJOFRVFGBDJMJUBP
    EFTFOWPMWJNFOUPF
    EJTUSJCVJÇÄPEFXFCBQQT
    VTBOEPDPOUBJOFSTMJOVY

    View Slide

  10. Containers Linux
    w 7JSUVBMJ[BÇÄPBOÍWFMEF40RVFQFSNJUFSPEBSNÙMUJQMPTTJTUFNBT
    MJOVYJTPMBEPT
    w 1FSNJUFSPEBSVNNJOJ-JOVYEFOUSPEFVN-JOVYKÂFYJTUFOUF

    View Slide

  11. 7. %PDLFS$POUBJOFST
    $POUBJOFSTTÄPJTPMBEPT

    NBTDPNQBSUJMIBNP40F

    CJOTMJCTRVBOEPDPOWFOJFOUF

    View Slide

  12. 7JSUVBMJ[BÇÄPFN$POUBJOFST
    Host OS (Windows, OSX)
    VM (Guest OS + Docker Engine)
    Virtualization provider (VMWare, Virtualbox)
    MySQL 

    (LXC Container)
    App
    "NCJFOUF

    QBESPOJ[BEP
    Nginx

    (LXC Container)
    PHP-FPM

    (LXC Container)
    Link

    View Slide

  13. 7JSUVBMJ[BÇÄPFN$POUBJOFST
    Host OS (Linux)
    Docker Engine
    MySQL 

    (LXC Container)
    App
    Nginx

    (LXC Container)
    PHP-FPM

    (LXC Container)
    "NCJFOUF

    QBESPOJ[BEP

    View Slide

  14. 0RVFTÄP
    %PDLFS$POUBJOFST

    View Slide

  15. 4ÄPDPOUBJOFSTMJOVY
    JTPMBEPTDSJBEPTBQBSUJS
    EFVNBJNBHFN

    View Slide

  16. 6NBJNBHFNÉDSJBEBB
    QBSUJSEFJOTUSVÇÕFTRVF
    JOTUBMBNFDPOpHVSBN
    EFQFOEÊODJBTOFDFTTÂSJBT
    QSPWJTJPOBNFOUP

    View Slide

  17. %PDLFS)VC

    IVCEPDLFSDPN

    View Slide

  18. docker pull phpunit/phpunit

    View Slide

  19. View Slide

  20. $POTUSVJOEP
    TVBTQSÓQSJBT
    JNBHFOT

    View Slide

  21. 1 FROM ubuntu:14.04
    2
    3 # Install Python.
    4 RUN apt-get update
    5 RUN apt-get install -y python python-dev python-pip python-virtualenv
    6 RUN rm -rf /var/lib/apt/lists/*
    7
    8 # Define working directory.
    9 WORKDIR /data
    10
    11 # Define default command.
    12 CMD ["bash"]
    Dockerfile

    View Slide

  22. $BEBJOTUSVÇÄP36/
    BEJDJPOBVNBOPWB
    DBNBEBÁJNBHFN

    View Slide

  23. 2VBOUPNBJTDBNBEBT
    NBJTFTQBÇPBJNBHFN
    PDVQBSÂ

    View Slide

  24. 1 FROM ubuntu:14.04
    2
    3 # Install Python.
    4 RUN \
    5 apt-get update && \
    6 apt-get install -y python python-dev python-pip python-virtualenv && \
    7 rm -rf /var/lib/apt/lists/*
    8
    9 # Define working directory.
    10 WORKDIR /data
    11
    12 # Define default command.
    13 CMD ["bash"]
    Dockerfile
    Boa Prática

    View Slide

  25. $BNBEBTFNDPNVNTÄP
    DPNQBSUJMIBEBTFOUSF
    DPOUBJOFST

    View Slide

  26. 3PEBOEP

    $POUBJOFST

    View Slide

  27. docker run --name meubanco mariadb

    View Slide

  28. DEMO

    View Slide

  29. %PDLFS

    .BDIJOF

    GPSNFSCPPUEPDLFS

    View Slide

  30. 'FSSBNFOUBRVFQFSNJUF
    DSJBSFHFSFODJBSNÂRVJOBT
    FNIPTUTOÄPMJOVYFDMPVE
    QSPWJEFST

    View Slide

  31. .ÂRVJOBTTÄP
    QSPWJTJPOBEBTDPNVN
    MJOVYCBTF%PDLFS&OHJOF

    View Slide

  32. /P049F8JOEPXT
    %PDLFS.BDIJOFPGFSFDF
    VNBJOUFSGBDFRVFBCTUSBJ
    BT"1*TEP7JSUVBMCPYF
    7.8BSF

    View Slide

  33. docker-machine create dev --driver virtualbox

    View Slide

  34. docker-machine start dev

    View Slide

  35. eval “$(docker-machine env dev)”

    View Slide

  36. DEMO

    View Slide

  37. %PDLFS

    $PNQPTF

    GPSNFSpH

    View Slide

  38. 'FSSBNFOUBEF
    PSRVFTUBÇÄPRVFQFSNJUF
    EFDMBSBSFTVCJSNÙMUJQMPT
    DPOUBJOFST

    View Slide

  39. &WJUBPUSBCBMIPEFSPEBS
    WÂSJPTEPDLFSSVOQBSB
    TVCJSUPEPTPTDPOUBJOFST
    OFDFTTÂSJPT

    View Slide

  40. 1 wordpress:
    2 image: wordpress
    3 links:
    4 - db:mysql
    5 ports:
    6 - 80:80
    7 working_dir: /var/www/html
    8 volumes:
    9 - .:/var/www/html/wp-content/themes/development
    10 db:
    11 image: mariadb
    12 environment:
    13 MYSQL_ROOT_PASSWORD: example
    docker-compose.yml
    /PNFEPDPOUBJOFS
    *NBHFN
    -JOLFOUSFDPOUBJOFST
    .BQFBNFOUPEFQPSUBT
    $PNQBSUJMIBNFOUPEFBSRVJWPT

    View Slide

  41. 1 python:
    2 build: ./Dockerfile

    3 volumes:
    4 - .:/data
    docker-compose.yml

    View Slide

  42. docker-compose up

    View Slide

  43. DEMO

    View Slide

  44. 0RVFFTUÄPGBMBOEPTPCSF

    View Slide

  45. Pontos positivos
    • Mesmo ambiente em dev e prod
    • Dependências facilmente atualizadas
    • Leve e rápido
    • Possibilidade de compor containers

    View Slide

  46. Pontos negativos
    • APIs mudam muito rápido
    • Conceito de containers é difícil de entender
    • Comandos muito extensos, difícil memorização

    View Slide

  47. Vagrant x Docker
    • Vagrant + Provisionamento é difícil de atualizar
    • Containers são bem mais leves e com boot mais rápido

    View Slide

  48. 1PSPOEFDPNFÇBS

    View Slide

  49. (FUUJOH4UBSUFE

    IUUQTEPDTEPDLFSDPNNBD
    IUUQTEPDTEPDLFSDPNXJOEPXT
    IUUQTEPDTEPDLFSDPNMJOVY

    View Slide

  50. %PDVNFOUBÇÄP

    IUUQTEPDTEPDLFSDPN

    View Slide

  51. $POUBJOFST
    DPN%PDLFS

    %BOJFM3PNFSP

    View Slide

  52. %PDLFS

    5PPMCPY
    IUUQTEPDLFSDPNQSPEVDUTEPDLFSUPPMCPY

    View Slide

  53. ,JUFNBUJD

    View Slide

  54. 5FNNBJTDPJTB

    View Slide

  55. 5FN

    View Slide

  56. Tutum Codeship
    DigitalOcean

    View Slide

  57. VALEU!
    vilar.cc/about

    View Slide