Docker from basics to orchestration (PHPConfBr2015)

Docker from basics to orchestration (PHPConfBr2015)

Talk given at PHP conference Brasil 2015 about Docker

280fecb4f048de5ecf36bec281609ea4?s=128

Wellington F. Silva

December 03, 2015
Tweet

Transcript

  1. Docker From basics to orchestration

  2. Credits Special thanks to all the people who made and

    released these awesome resources for free: ◎ Presentation template by SlidesCarnival ◎ Photographs by Unsplash & Death to the Stock Photo (license) ◎ Dark wood background by The pattern library
  3. About Me

  4. Overview

  5. Overview ◎ Environment Issues ◎ Virtualization ◎ LXC ◎ Docker

    ◦ features ◦ demo ◎ Machine ◎ Orchestration ◦ tools ◦ demo ◎ Swarm ◦ demo ◎ Q&A
  6. Environment Issues

  7. Environment Issues ◎ substr vs mb_substr functions

  8. Environment Issues ◎ substr vs mb_substr functions ◎ short open

    tags: <?=
  9. Environment Issues ◎ substr vs mb_substr functions ◎ short open

    tags: <?= ◎ syntax changes between versions: array(); e [];
  10. Environment Issues ◎ substr vs mb_substr functions ◎ short open

    tags: <?= ◎ syntax changes between versions: array(); e []; ◎ extensions that we forget to install in production: php-memcached, redis, amqp, etc.
  11. Environment Issues ◎ substr vs mb_substr functions ◎ short open

    tags: <?= ◎ syntax changes between versions: array(); e []; ◎ extensions that we forget to install in production: php-memcached, redis, amqp, etc. ◎ different upload file settings in different servers
  12. None
  13. None
  14. Virtualization

  15. ◎ 1960 - inspired by cpu time sharing Virtualization -

    History
  16. ◎ 1960 - inspired by cpu time sharing ◎ IBM

    370 - First instructions to support software virtualization, CP/CMS allow running more than one instance simultaneously Virtualization - History
  17. ◎ 1960 - inspired by cpu time sharing ◎ IBM

    370 - First instructions to support software virtualization, CP/CMS allow running more than one instance simultaneously ◎ IBM z/VM - First success case, all hardware were virtualized Virtualization - History
  18. ◎ 1960 - inspired by cpu time sharing ◎ IBM

    370 - First instructions to support software virtualization, CP/CMS allow running more than one instance simultaneously ◎ IBM z/VM - First success case, all hardware were virtualized ◎ until nineties only client/server applications Virtualization - History
  19. ◎ 1960 - inspired by cpu time sharing ◎ IBM

    370 - First instructions to support software virtualization, CP/CMS allow running more than one instance simultaneously ◎ IBM z/VM - First success case, all hardware were virtualized ◎ until nineties only client/server applications ◎ 2000+ - CPUs with virtualization support, hypervisors: VMWare, Xen, KVM, VirtualBox, etc Virtualization - History
  20. Virtualization - Hypervisors

  21. Virtualization - Stack

  22. ◎ Standard environment Virtualization - Pros & Cons

  23. ◎ Standard environment ◎ Improve resources utilization Virtualization - Pros

    & Cons
  24. ◎ Standard environment ◎ Improve resources utilization ◎ Easy data

    recovery Virtualization - Pros & Cons
  25. ◎ Standard environment ◎ Improve resources utilization ◎ Easy data

    recovery ◎ If host fails all VMs crashes together Virtualization - Pros & Cons
  26. ◎ Standard environment ◎ Improve resources utilization ◎ Easy data

    recovery Virtualization - Pros & Cons ◎ If host fails all VMs crashes together ◎ Troubleshooting more difficult
  27. ◎ Standard environment ◎ Improve resources utilization ◎ Easy data

    recovery Virtualization - Pros & Cons ◎ If host fails all VMs crashes together ◎ Troubleshooting more difficult ◎ Increase overhead
  28. LXC - Linux Containers

  29. LXC - Linux Containers ◎ Exists since Jul/2008 - Kernel

    2.6.26+
  30. LXC - Linux Containers ◎ Exists since Jul/2008 - Kernel

    2.6.26+ ◎ Process isolation
  31. LXC - Linux Containers ◎ Exists since Jul/2008 - Kernel

    2.6.26+ ◎ Process isolation ◎ Network isolation
  32. LXC - Linux Containers ◎ Exists since Jul/2008 - Kernel

    2.6.26+ ◎ Process isolation ◎ Network isolation ◎ Memory limitation
  33. LXC - Linux Containers ◎ Exists since Jul/2008 - Kernel

    2.6.26+ ◎ Process isolation ◎ Network isolation ◎ Memory limitation ◎ File system isolation
  34. LXC - Pros & Cons ◎ Good resources isolation

  35. LXC - Pros & Cons ◎ Good resources isolation ◎

    Run as a process, a single PID is created
  36. LXC - Pros & Cons ◎ Good resources isolation ◎

    Run as a process, a single PID is created ◎ Reuse host resources (libs, kernel)
  37. LXC - Pros & Cons ◎ Good resources isolation ◎

    Run as a process, a single PID is created ◎ Reuse host resources (libs, kernel) ◎ Starts much more faster than VMs
  38. LXC - Pros & Cons ◎ Volume share are difficult

    to do ◎ Good resources isolation ◎ Run as a process, a single PID is created ◎ Reuse host resources (libs, kernel) ◎ Starts much more faster than VMs
  39. LXC - Pros & Cons ◎ Volume share are difficult

    to do ◎ Architecture failure may lead to chroot attack ◎ Good resources isolation ◎ Run as a process, a single PID is created ◎ Reuse host resources (libs, kernel) ◎ Starts much more faster than VMs
  40. LXC - Pros & Cons ◎ Volume share are difficult

    to do ◎ Architecture failure may lead to chroot attack ◎ IO overhead ◎ Good resources isolation ◎ Run as a process, a single PID is created ◎ Reuse host resources (libs, kernel) ◎ Starts much more faster than VMs
  41. LXC - Pros & Cons ◎ Volume share are difficult

    to do ◎ Architecture failure may lead to chroot attack ◎ IO overhead ◎ Run on Linux hosts only ◎ Good resources isolation ◎ Run as a process, a single PID is created ◎ Reuse host resources (libs, kernel) ◎ Starts much more faster than VMs
  42. DOCKER

  43. Docker

  44. Docker Doki =>

  45. None
  46. None
  47. None
  48. ◎ Portable Docker - Features

  49. ◎ Portable ◎ Versionable Docker - Features

  50. ◎ Portable ◎ Versionable ◎ Reusable Docker - Features

  51. ◎ Portable ◎ Versionable ◎ Reusable ◎ Copy-on-write Docker -

    Features
  52. ◎ Portable ◎ Versionable ◎ Reusable ◎ Copy-on-write ◎ Logging

    Docker - Features
  53. ◎ Portable ◎ Versionable ◎ Reusable ◎ Copy-on-write ◎ Logging

    ◎ Image change management Docker - Features
  54. ◎ Portable ◎ Versionable ◎ Reusable ◎ Copy-on-write ◎ Logging

    ◎ Image change management ◎ Automatic build Docker - Features
  55. ◎ Portable ◎ Versionable ◎ Reusable ◎ Copy-on-write ◎ Logging

    ◎ Image change management ◎ Automatic build ◎ Easy to share Docker - Features
  56. Docker - Features ◎ Private and public registry

  57. Docker - Features ◎ Private and public registry ◎ Server-client

    architecture
  58. Docker - Features ◎ Private and public registry ◎ Server-client

    architecture ◎ Client consume engine API
  59. Docker - Features ◎ Private and public registry ◎ Server-client

    architecture ◎ Client consume engine API ◎ Orchestration tools (compose, swarm,volume networks)
  60. Docker - Features ◎ Private and public registry ◎ Server-client

    architecture ◎ Client consume engine API ◎ Orchestration tools (compose, swarm,volume networks) ◎ Always innovating
  61. Docker - VM Comparison

  62. Docker - Quick Tips ◎ It is a container not

    a VM
  63. Docker - Quick Tips ◎ It is a container not

    a VM ◎ Container images are like VM boxes
  64. Docker - Quick Tips ◎ It is a container not

    a VM ◎ Container images are like VM boxes ◎ Images are state, container runs it
  65. Docker - Install ◎ Follow instructions for your OS in

    http://docs. docker.com/installation
  66. Docker - Install ◎ Follow instructions for your OS in

    http://docs. docker.com/installation ◎ Several distros supported
  67. Docker - Install ◎ Follow instructions for your OS in

    http://docs. docker.com/installation ◎ Several distros supported ◎ Mac OS X and Windows needs a VM to act like a Docker host - Boot2docker
  68. Docker - Install ◎ Follow instructions for your OS in

    http://docs. docker.com/installation ◎ Several distros supported ◎ Mac OS X and Windows needs a VM to act like a Docker host - Boot2docker ◎ There is roadmap to run Linux container on FreeBSD host
  69. Docker - Install ◎ Follow instructions for your OS in

    http://docs. docker.com/installation ◎ Several distros supported ◎ Mac OS X and Windows needs a VM to act like a Docker host - Boot2docker ◎ There is roadmap to run Linux container on FreeBSD host ◎ Windows containers running on Windows hosts will be available on Windows Server 2016
  70. Docker - Beggining ◎ run ◎ pull ◎ commit ◎

    push ◎ exec ◎ ps ◎ images ◎ inspect ◎ rm ◎ rmi
  71. “ Talk is cheap, show me the code. Linus Torvalds

  72. pull commit push Docker - Images Dockerfile

  73. Docker - Improving ◎ Volume ◦ list, create, inspect ◎

    Port expose and port mapping ◎ Links between containers ◎ Network ◦ list, create,inspect, connect
  74. Second Demo

  75. Docker - Machine ◎ Creates virtual machines ready to run

    docker locally or on the cloud. ◎ drivers available: ◦ Amazon Web Services, Microsoft Azure, Digital Ocean, Exoscale, Google Compute Engine, Microsoft Hyper-V, OpenStack, Rackspace, IBM Softlayer, Oracle VirtualBox, VMware vCloud Air, VMware Fusion, VMware vSphere and Generic
  76. Docker - Orchestration ◎ Docker Compose (Old FIG)

  77. Docker - Orchestration ◎ Docker Compose (Old FIG)

  78. Docker - Orchestration ◎ Docker Compose (Old FIG)

  79. Docker - Orchestration ◎ Docker Compose (Old FIG) ◦ Config

    file: docker-compose.yml ◦ Run: docker-compose up
  80. Docker - Orchestration ◎ Docker Compose (Old FIG) ◦ Config

    file: docker-compose.yml ◦ Run: docker-compose up ◎ Crane - http://getcrane.com ◦ Config file: crane.json or crane.yaml ◦ Run: crane lift
  81. Docker - Orchestration ◎ Docker Compose (Old FIG) ◦ Config

    file: docker-compose.yml ◦ Run: docker-compose up ◎ Crane - http://getcrane.com ◦ Config file: crane.json or crane.yaml ◦ Run: crane lift ◎ AZK - http://www.azk.io ◦ Config file: Azkfile.js ◦ Run: `azk agent start` and then `azk start`
  82. Third Demo

  83. Docker - Orchestration ◎ Docker Swarm ◦ Orchestrate docker hosts

    ◦ supports schedulers and node discovery services
  84. Last Demo

  85. Docker - Comming ◎ User namespaces ◎ Open Containers Initiative

    - by Linux Foundation: https://www.opencontainers.org/
  86. Voucher: php_conf2015 Q&A Slides http://bit.ly/phpconfbr2015