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. 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
  2. 5.

    Overview ◎ Environment Issues ◎ Virtualization ◎ LXC ◎ Docker

    ◦ features ◦ demo ◎ Machine ◎ Orchestration ◦ tools ◦ demo ◎ Swarm ◦ demo ◎ Q&A
  3. 9.

    Environment Issues ◎ substr vs mb_substr functions ◎ short open

    tags: <?= ◎ syntax changes between versions: array(); e [];
  4. 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.
  5. 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
  6. 12.
  7. 13.
  8. 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
  9. 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
  10. 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
  11. 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
  12. 25.

    ◎ Standard environment ◎ Improve resources utilization ◎ Easy data

    recovery ◎ If host fails all VMs crashes together Virtualization - Pros & Cons
  13. 26.

    ◎ Standard environment ◎ Improve resources utilization ◎ Easy data

    recovery Virtualization - Pros & Cons ◎ If host fails all VMs crashes together ◎ Troubleshooting more difficult
  14. 27.

    ◎ Standard environment ◎ Improve resources utilization ◎ Easy data

    recovery Virtualization - Pros & Cons ◎ If host fails all VMs crashes together ◎ Troubleshooting more difficult ◎ Increase overhead
  15. 31.

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

    2.6.26+ ◎ Process isolation ◎ Network isolation
  16. 32.

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

    2.6.26+ ◎ Process isolation ◎ Network isolation ◎ Memory limitation
  17. 33.

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

    2.6.26+ ◎ Process isolation ◎ Network isolation ◎ Memory limitation ◎ File system isolation
  18. 35.

    LXC - Pros & Cons ◎ Good resources isolation ◎

    Run as a process, a single PID is created
  19. 36.

    LXC - Pros & Cons ◎ Good resources isolation ◎

    Run as a process, a single PID is created ◎ Reuse host resources (libs, kernel)
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 42.
  26. 43.
  27. 45.
  28. 46.
  29. 47.
  30. 53.

    ◎ Portable ◎ Versionable ◎ Reusable ◎ Copy-on-write ◎ Logging

    ◎ Image change management Docker - Features
  31. 54.

    ◎ Portable ◎ Versionable ◎ Reusable ◎ Copy-on-write ◎ Logging

    ◎ Image change management ◎ Automatic build Docker - Features
  32. 55.

    ◎ Portable ◎ Versionable ◎ Reusable ◎ Copy-on-write ◎ Logging

    ◎ Image change management ◎ Automatic build ◎ Easy to share Docker - Features
  33. 58.

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

    architecture ◎ Client consume engine API
  34. 59.

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

    architecture ◎ Client consume engine API ◎ Orchestration tools (compose, swarm,volume networks)
  35. 60.

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

    architecture ◎ Client consume engine API ◎ Orchestration tools (compose, swarm,volume networks) ◎ Always innovating
  36. 63.

    Docker - Quick Tips ◎ It is a container not

    a VM ◎ Container images are like VM boxes
  37. 64.

    Docker - Quick Tips ◎ It is a container not

    a VM ◎ Container images are like VM boxes ◎ Images are state, container runs it
  38. 65.

    Docker - Install ◎ Follow instructions for your OS in

    http://docs. docker.com/installation
  39. 66.

    Docker - Install ◎ Follow instructions for your OS in

    http://docs. docker.com/installation ◎ Several distros supported
  40. 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
  41. 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
  42. 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
  43. 70.

    Docker - Beggining ◎ run ◎ pull ◎ commit ◎

    push ◎ exec ◎ ps ◎ images ◎ inspect ◎ rm ◎ rmi
  44. 73.

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

    Port expose and port mapping ◎ Links between containers ◎ Network ◦ list, create,inspect, connect
  45. 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
  46. 79.

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

    file: docker-compose.yml ◦ Run: docker-compose up
  47. 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
  48. 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`
  49. 83.

    Docker - Orchestration ◎ Docker Swarm ◦ Orchestrate docker hosts

    ◦ supports schedulers and node discovery services
  50. 84.
  51. 85.

    Docker - Comming ◎ User namespaces ◎ Open Containers Initiative

    - by Linux Foundation: https://www.opencontainers.org/