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

Comment Docker révolutionne le web

88b8138397e1d1441f4e4a54348bde09?s=47 ubermuda
October 29, 2014

Comment Docker révolutionne le web

88b8138397e1d1441f4e4a54348bde09?s=128

ubermuda

October 29, 2014
Tweet

Transcript

  1. Comment Docker révolutionne le web Geoffrey Bachelet – @ubermuda

  2. Qu'est-ce que Docker À quoi ça sert Comment ça marche

    Pourquoi on l'aime Limitations Cas d'utilisation
  3. Docker is an open platform for developers and sysadmins to

    build, ship, and run distributed applications. ” https://www.docker.com/whatisdocker/
  4. http://www.slideshare.net/dotCloud

  5. http://www.slideshare.net/dotCloud

  6. http://www.slideshare.net/dotCloud

  7. http://www.slideshare.net/dotCloud

  8. http://www.slideshare.net/dotCloud

  9. Un système de container pour livrer n'importe quel code, n'importe

    où*. * Pour certaines definitions de n'importe où.
  10. None
  11. Machine Virtuelle https://www.docker.com/whatisdocker/

  12. Container https://www.docker.com/whatisdocker/

  13. Plus rapide Moins de mémoire Moins d'espace disque

  14. Comme* des VM super légères. * Pour certaines definitions de

    comme.
  15. LXC is a userspace interface for the Linux kernel containment

    features. ” https://linuxcontainers.org/
  16. None
  17. https://blog.docker.com/2014/06/keynote-videos-from-dockercon14/

  18. libcontainer Remplacement de LXC Implémentation en Go Pas de dépendances

    externes
  19. libswarm Composition de services

  20. None
  21. $  docker   Usage:  docker  [OPTIONS]  COMMAND  [arg...]    -­‐H=[unix:///var/run/docker.sock]:

     tcp:// host:port  to  bind/connect  to  or  unix://path/to/ socket  to  use   A  self-­‐sufficient  runtime  for  linux  containers.   Commands:   ...
  22. $  docker  run  busybox  ls   bin   dev  

    etc   home   lib   lib64   linuxrc   ...
  23. docker  run  busybox  ls

  24. docker  run  busybox  ls

  25. docker  run  busybox  ls

  26. docker  run  busybox  ls

  27. docker  run  busybox  ls

  28. Images ? Container ?

  29. Image https://docs.docker.com/terms/image/

  30. Container https://docs.docker.com/terms/image/

  31. https://docs.docker.com/terms/image/

  32. $  docker  run  -­‐it  debian:wheezy  /bin/bash   Unable  to  find

     image  'debian:wheezy'  locally   Pulling  repository  debian   61f7f4f722fb:  Download  complete   511136ea3c5a:  Download  complete   638fd9704285:  Download  complete   root@6c0009adf3c0:/#
  33. $  docker  run  -­‐it  debian:wheezy  /bin/bash   Unable  to  find

     image  'debian:wheezy'  locally   Pulling  repository  debian   61f7f4f722fb:  Download  complete   511136ea3c5a:  Download  complete   638fd9704285:  Download  complete   root@6c0009adf3c0:/#
  34. $  docker  run  -­‐it  debian:wheezy  /bin/bash   Unable  to  find

     image  'debian:wheezy'  locally   Pulling  repository  debian   61f7f4f722fb:  Download  complete   511136ea3c5a:  Download  complete   638fd9704285:  Download  complete   root@6c0009adf3c0:/#
  35. $  docker  run  -­‐it  debian:wheezy  /bin/bash   Unable  to  find

     image  'debian:wheezy'  locally   Pulling  repository  debian   61f7f4f722fb:  Download  complete   511136ea3c5a:  Download  complete   638fd9704285:  Download  complete   root@6c0009adf3c0:/#
  36. $  docker  run  -­‐it  debian:wheezy  /bin/bash   Unable  to  find

     image  'debian:wheezy'  locally   Pulling  repository  debian   61f7f4f722fb:  Download  complete   511136ea3c5a:  Download  complete   638fd9704285:  Download  complete   root@6c0009adf3c0:/#
  37. Docker Hub

  38. $  docker  run  -­‐it  debian:wheezy  /bin/bash   ...   root@6c0009adf3c0:/#

     apt-­‐get  install  -­‐y  nginx   root@6c0009adf3c0:/#  exit   $  docker  commit  6c0009adf3c0  nginx   $  docker  run  -­‐it  nginx  /bin/bash
  39. $  docker  run  -­‐it  debian:wheezy  /bin/bash   ...   root@6c0009adf3c0:/#

     apt-­‐get  install  -­‐y  nginx   root@6c0009adf3c0:/#  exit   $  docker  commit  6c0009adf3c0  nginx   $  docker  run  -­‐it  nginx  /bin/bash
  40. $  docker  run  -­‐it  debian:wheezy  /bin/bash   ...   root@6c0009adf3c0:/#

     apt-­‐get  install  -­‐y  nginx   root@6c0009adf3c0:/#  exit   $  docker  commit  6c0009adf3c0  nginx   $  docker  run  -­‐it  nginx  /bin/bash
  41. $  docker  run  -­‐it  debian:wheezy  /bin/bash   ...   root@6c0009adf3c0:/#

     apt-­‐get  install  -­‐y  nginx   root@6c0009adf3c0:/#  exit   $  docker  commit  6c0009adf3c0  nginx   $  docker  run  -­‐it  nginx  /bin/bash
  42. $  docker  run  -­‐it  debian:wheezy  /bin/bash   ...   root@6c0009adf3c0:/#

     apt-­‐get  install  -­‐y  nginx   root@6c0009adf3c0:/#  exit   $  docker  commit  6c0009adf3c0  nginx   $  docker  run  -­‐it  nginx  /bin/bash
  43. Dockerfile

  44. FROM  debian:wheezy   ENV  DEBIAN_FRONTEND  noninteractive   RUN  apt-­‐get  update

     -­‐y   RUN  apt-­‐get  install  -­‐y  nginx   CMD  ["/usr/bin/nginx",  "-­‐g",  "'daemon  off;'"]
  45. Public Registry Private Registry Dockerfile Networking Volumes Remote API Docker

    CLI FIG Ambassador boot2docker
  46. None
  47. Déployer n'importe quoi

  48. Déployer n'importe où* * Pour certaines definitions de n'importe où.

  49. Déployer facilement

  50. Déployer de manière sûre

  51. C'est pas fini !

  52. Ambassador

  53. App Ambassador MySQL Redis MySQL Ambassador Ambassador Ambassador

  54. App Ambassador MySQL Redis MySQL Ambassador Ambassador Ambassador Reconfiguration automatique

  55. App Ambassador Ambassador Facebook Twitter Health check, Cache, etc.

  56. Scale up. And Down.

  57. Reverse Proxy App App Ambassador MySQL

  58. Reverse Proxy App App App Ambassador MySQL

  59. Fault tolerance.

  60. Reverse Proxy App App App Ambassador MySQL

  61. Reverse Proxy App App App Ambassador MySQL

  62. App Ambassador MySQL Redis MySQL Ambassador Ambassador Ambassador

  63. App Ambassador MySQL Redis MySQL Ambassador Ambassador Ambassador

  64. App Ambassador MySQL Redis MySQL Ambassador Ambassador Ambassador

  65. App Ambassador MySQL Redis MySQL Ambassador Ambassador Ambassador

  66. App Ambassador MySQL Redis MySQL Ambassador Ambassador Ambassador

  67. App Ambassador MySQL Redis MySQL Ambassador Ambassador Ambassador

  68. ChaosMonkey https://github.com/Netflix/SimianArmy/wiki/Chaos-Monkey

  69. 12factor.net

  70. Damien Mathieu @dmathieu 12 factor app, bonnes pratiques pour développer

    des applications puissantes et scalables Demain, 10h30 http://www.blendwebmix.com/schedule/12-factor-app-bonnes-pratiques-pour-developper-des-applications-puissantes-et-scalables/
  71. Moi-même @ubermuda Vers des applications twelve-factor https://speakerdeck.com/ubermuda/vers-des-applications-twelve-factor

  72. Dev/prod parity.

  73. Continuous integration.

  74. ...

  75. None
  76. Certaines définitions de n'importe où.

  77. Pas natif en dehors de Linux. Boot2docker

  78. Linux 3.8+ (ou moins)

  79. Noyau partagé. Sécurité.

  80. Outillage peu matûre. Orchestration, monitoring, ...

  81. Projet interne à dotCloud mars 2013 libcontainer DockerCon + 1.0

    Docker 1.3 OpenSource 13 mars 2013 9-10 juin 16 octobre
  82. 16105 stars 649 contributeurs +

  83. RedHat 10 juin Rachat de Orchard 40M$ Series C Microsoft

    Google 23 juillet 16 septembre 15 octobre 19 sept. 2013
  84. Continuous Integration Platform as a Service Distributed Applications Composition Continuous

    Integration Platform as a Service Easy Application Deployment
  85. Merci ! speackerdeck.com/ubermuda/comment-docker-revolutionne-le-web geoffrey.io / @ubermuda geoffrey.io/books/discovering-docker.html