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

Docker & Linux Containers (with animations)

Docker & Linux Containers (with animations)

Presentation I gave for my team at Microsoft Azure.

This is animated version of https://speakerdeck.com/alp/docker-and-linux-containers

Ahmet Alp Balkan

August 14, 2014
Tweet

More Decks by Ahmet Alp Balkan

Other Decks in Technology

Transcript

  1. Power  of  Containers              

                                                                                                                                                                                                                                                                                   
  2. Power  of  Containers   •  Standard  format  everybody  agrees  on

                                                                                                                                                                                                                       
  3. Power  of  Containers   •  Standard  format  everybody  agrees  on

      •  Once  you  seal  the  box,  it  gets  shipped  “as  is”                                                                                                                    
  4. Power  of  Containers   •  Standard  format  everybody  agrees  on

      •  Once  you  seal  the  box,  it  gets  shipped  “as  is”   •  SeparaVon  of  concerns   – Building  ó  Packaging  ó  Shipping  
  5. Type  1  Hypervisor     Hardware   VM   VM

      OperaVng  System   OperaVng  System   Hypervisor   Kernel  
  6. Type  1  Hypervisor     Hardware   VM   VM

      OperaVng  System   OperaVng  System   bins/libs   bins/libs   Hypervisor   Kernel  
  7. Type  1  Hypervisor     Hardware   VM   VM

      OperaVng  System   OperaVng  System   bins/libs   bins/libs   App   App   App   App   Hypervisor   Kernel  
  8. Type  2  Hypervisor     Hardware   Hypervisor  So[ware  

    OperaVng  System   App   App   App  
  9. Type  2  Hypervisor     Hardware   Hypervisor  So[ware  

    VM   VM   OperaVng  System   OperaVng  System   bins/libs   bins/libs   App   App   App   App   OperaVng  System   App   App   App  
  10. Linux  Containers   Hardware   OperaVng  System  (Linux)   bins/libs

      Container   Container   bins/libs   App   App  
  11. Linux  Containers   Hardware   OperaVng  System  (Linux)   bins/libs

      Container   Container   bins/libs   App   App   App  
  12. Linux  Containers   Hardware   OperaVng  System  (Linux)   bins/libs

      Container   Container   bins/libs   App   App   App  
  13. lxc:  Linux  Containers   •  OS-­‐Level  virtualizaVon,  no  Hypervisor  

    •  Namespacing   –  PIDs   –  user  IDs   –  network  tables   –  mounted  drivers   –  …   •  Started  in  2006.   •  Developed  by  a  team  of  4   –  v1.0  in  2014.  
  14. cgroups:  Control  Groups   •  Fair  resource  usage  sharing  for

     Linux  kernel   – CPU   – Memory   – I/O   •  Started  in  2007.   – by  2  Google  Engineers  
  15. Advantages  of  containers              

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  16. Advantages  of  containers   •  Only  one  kernel  runs  on

     the  machine                                                                                                                                                                                                                                                                                                                                                                                                                                  
  17. Advantages  of  containers   •  Only  one  kernel  runs  on

     the  machine   •  No  Hypervisor  overhead.   –  Apps  directly  run  on  CPU   –  Rack  space  &  power  &  more  free  CPU  cycles                                                                                                                                                                                                                                      
  18. Advantages  of  containers   •  Only  one  kernel  runs  on

     the  machine   •  No  Hypervisor  overhead.   –  Apps  directly  run  on  CPU   –  Rack  space  &  power  &  more  free  CPU  cycles   •  Run  different  versions  of  OS  on  same  server   –  Run  different  OSes  on  the  same  server                                                              
  19. Advantages  of  containers   •  Only  one  kernel  runs  on

     the  machine   •  No  Hypervisor  overhead.   –  Apps  directly  run  on  CPU   –  Rack  space  &  power  &  more  free  CPU  cycles   •  Run  different  versions  of  OS  on  same  server   –  Run  different  OSes  on  the  same  server   •  Process  isolaVon  &  security  
  20. Use  of  Linux  Containers            

                                                                                                                                                                                                                                               
  21. Use  of  Linux  Containers   •  Borg   –  Google’s

     “secret  sauce”   –  Everything  runs  in  containers   –  Not  open  source                                                                                          
  22. Use  of  Linux  Containers   •  Borg   –  Google’s

     “secret  sauce”   –  Everything  runs  in  containers   –  Not  open  source                                                                                          
  23. Use  of  Linux  Containers   •  Borg   –  Google’s

     “secret  sauce”   –  Everything  runs  in  containers   –  Not  open  source     •  Mesos   –  Developed  by  Twiger   –  Open  sourced  
  24. Use  of  Linux  Containers   •  Borg   –  Google’s

     “secret  sauce”   –  Everything  runs  in  containers   –  Not  open  source     •  Mesos   –  Developed  by  Twiger   –  Open  sourced  
  25. Use  of  Linux  Containers   •  Borg   –  Google’s

     “secret  sauce”   –  Everything  runs  in  containers   –  Not  open  source     •  Mesos   –  Developed  by  Twiger   –  Open  sourced   “IT’S  A  WAY  OF  STITCHING  TOGETHER  A   COLLECTION  OF  MACHINES  INTO,  BASICALLY,   A  BIG  COMPUTER.”  
  26. Why  was  Docker  born?            

                                                                                                                                                                                                                                                                                                                                                                                                                       
  27. Why  was  Docker  born?   •  Shipping  code  to  servers

     is  hard                                                                                                                                                                                                                                                                                                                                                            
  28. Why  was  Docker  born?   •  Shipping  code  to  servers

     is  hard   •  It’s  hard  to  glue  the  technology   – LXC  +  cgroups                                                                                                                                                                                                                                                          
  29. Why  was  Docker  born?   •  Shipping  code  to  servers

     is  hard   •  It’s  hard  to  glue  the  technology   – LXC  +  cgroups   – lmcky:  “Let  me  contain  that  for  you”   •  open  source  version  of  Google’s  container  stack                                                                          
  30. Why  was  Docker  born?   •  Shipping  code  to  servers

     is  hard   •  It’s  hard  to  glue  the  technology   – LXC  +  cgroups   – lmcky:  “Let  me  contain  that  for  you”   •  open  source  version  of  Google’s  container  stack     •  There  is  no  standard  image  format  
  31. Another  moVve:  eliminaVng  Ops            

                                                                                                                                                                                                                                                                                                                                                                                                                                 
  32. Another  moVve:  eliminaVng  Ops   •  So[ware  used  to  be

     deployed  by  ops  teams                                                                                                                                                                                                                                                                                                                                                    
  33. Another  moVve:  eliminaVng  Ops   •  So[ware  used  to  be

     deployed  by  ops  teams   •  Docker  might  be  “the  first  true  DevOps  tool”                                                                                                                                                                                                                                                        
  34. Another  moVve:  eliminaVng  Ops   •  So[ware  used  to  be

     deployed  by  ops  teams   •  Docker  might  be  “the  first  true  DevOps  tool”   – Increased  shipment  cadence                                                                                                                                                                                                
  35. Another  moVve:  eliminaVng  Ops   •  So[ware  used  to  be

     deployed  by  ops  teams   •  Docker  might  be  “the  first  true  DevOps  tool”   – Increased  shipment  cadence   – Fast  moving  engineering  culture                                                                                                                              
  36. Another  moVve:  eliminaVng  Ops   •  So[ware  used  to  be

     deployed  by  ops  teams   •  Docker  might  be  “the  first  true  DevOps  tool”   – Increased  shipment  cadence   – Fast  moving  engineering  culture   •  Sysadmins  no  more.                                                                                      
  37. Another  moVve:  eliminaVng  Ops   •  So[ware  used  to  be

     deployed  by  ops  teams   •  Docker  might  be  “the  first  true  DevOps  tool”   – Increased  shipment  cadence   – Fast  moving  engineering  culture   •  Sysadmins  no  more.   – A  great  abstracVon  over  infrastructure.  
  38. Why  is  Docker  special?            

                                                                                                                                                                                                                           
  39. Why  is  Docker  special?   •  The  real  value  is

     not  technology.                                                                                                                                                              
  40. Why  is  Docker  special?   •  The  real  value  is

     not  technology.   •  It’s  “gelng  people  to  agree  on  something”.                                                                  
  41. Why  is  Docker  special?   •  The  real  value  is

     not  technology.   •  It’s  “gelng  people  to  agree  on  something”.   – Packaging  and  delivery  method.  
  42. Why  is  Docker  special?   •  The  real  value  is

     not  technology.   •  It’s  “gelng  people  to  agree  on  something”.   – Packaging  and  delivery  method.  
  43. Cloud  as  one  big  machine   docker  client   $

     docker  run  …   libswarm  
  44. Demo  Vme   Linux  VM  on  Azure   docker  daemon

      docker  client   Container   Container  
  45. Demo  Vme   Linux  VM  on  Azure   docker  daemon

      docker  client   Container   Container   App   App  
  46. Docker  Image  Layers   ubuntu   apache+php   ADD  

     /my/applicaIon   ADD    /my/configuraIon  
  47. Docker  Image  Layers   ubuntu   apache+php   ADD  

     /my/applicaIon   ADD    /my/configuraIon   200  MB  
  48. Docker  Image  Layers   ubuntu   apache+php   ADD  

     /my/applicaIon   ADD    /my/configuraIon   200  MB   250  MB  
  49. Docker  Image  Layers   ubuntu   apache+php   ADD  

     /my/applicaIon   ADD    /my/configuraIon   200  MB   250  MB   260  MB  
  50. Docker  Image  Layers   ubuntu   apache+php   ADD  

     /my/applicaIon   ADD    /my/configuraIon   200  MB   250  MB   260  MB   261  MB  
  51. Docker  Image  Layers   ubuntu   apache+php   ADD  

     /my/applicaIon   ADD    /my/configuraIon   200  MB   250  MB   260  MB   261  MB   50  MB  diff   10  MB  diff   1  MB  diff  
  52. Layers  &  Reuse   Base  Linux  DistribuVon  image   Google

     configuraVon   mapreduce   crawler   web  frontend   video  encoder  
  53. Layers  &  Reuse   Base  Linux  DistribuVon  image   Google

     configuraVon   mapreduce   crawler   web  frontend   video  encoder  
  54. Layers  &  Reuse   Base  Linux  DistribuVon  image   Google

     configuraVon   mapreduce   crawler   web  frontend   video  encoder  
  55. Dockerfile   FROM ubuntu:latest MAINTAINER Ahmet <[email protected]> RUN apt-get install

    nginx mysql python ADD /my/app /var/www/app ENTRYPOINT /var/www/app/server.py
  56. Dockerfile   FROM ubuntu:latest MAINTAINER Ahmet <[email protected]> RUN apt-get install

    nginx mysql python ADD /my/app /var/www/app ENTRYPOINT /var/www/app/server.py $ docker build
  57. Docker  use  cases              

                                                                                                                                                                                                                                                                                                                                         
  58. Docker  use  cases   •  Just  like  VMs  in  producVon

      –  SpoVfy,  eBay                                                                                                                                                                                                                                                            
  59. Docker  use  cases   •  Just  like  VMs  in  producVon

      –  SpoVfy,  eBay   •  One  off  tasks                                                                                                                                                                                                                              
  60. Docker  use  cases   •  Just  like  VMs  in  producVon

      –  SpoVfy,  eBay   •  One  off  tasks   –  Build  automaVon                                                                                                                                                                                          
  61. Docker  use  cases   •  Just  like  VMs  in  producVon

      –  SpoVfy,  eBay   •  One  off  tasks   –  Build  automaVon   –  ConVnuous  integraVon                                                                                                                                          
  62. Docker  use  cases   •  Just  like  VMs  in  producVon

      –  SpoVfy,  eBay   •  One  off  tasks   –  Build  automaVon   –  ConVnuous  integraVon   –  TesVng                                                                                                                        
  63. Docker  use  cases   •  Just  like  VMs  in  producVon

      –  SpoVfy,  eBay   •  One  off  tasks   –  Build  automaVon   –  ConVnuous  integraVon   –  TesVng   –  Bug  repros                                                                                                
  64. Docker  use  cases   •  Just  like  VMs  in  producVon

      –  SpoVfy,  eBay   •  One  off  tasks   –  Build  automaVon   –  ConVnuous  integraVon   –  TesVng   –  Bug  repros   •  Making  the  cloud  look  like  “one  big  machine”    
  65. Clustering                  

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  66. Clustering   •  Kubernetes  (by  Google)   –  for  clustering

     Docker  containers  across  nodes   –  Inspired  by  Google’s  internal  systems  like  Borg/ Omega   –  Open  source   –  10+  years  of  experience  in  running  containers   –  ContribuVons  by  Microso[  &  IBM  etc.                                                                                                                              
  67. Clustering   •  Kubernetes  (by  Google)   –  for  clustering

     Docker  containers  across  nodes   –  Inspired  by  Google’s  internal  systems  like  Borg/ Omega   –  Open  source   –  10+  years  of  experience  in  running  containers   –  ContribuVons  by  Microso[  &  IBM  etc.   •  fleet  (by  CoreOS)   –  for  clustering  CoreOS  nodes   –  Open  source    
  68. Cons  of  Docker              

                                                                                                                                                                                                                                 
  69. Cons  of  Docker   •  Linux  only   – Probably  will

     never  support  Windows.                                                                                                                                        
  70. Cons  of  Docker   •  Linux  only   – Probably  will

     never  support  Windows.     •  Security  risks                                                                                                      
  71. Cons  of  Docker   •  Linux  only   – Probably  will

     never  support  Windows.     •  Security  risks     •  Same  pricing  as  VMs                                                          
  72. Cons  of  Docker   •  Linux  only   – Probably  will

     never  support  Windows.     •  Security  risks     •  Same  pricing  as  VMs   •  SVll  developing  ecosystem  
  73. Further  reading   •  Return  of  the  Borg  (Wired)  

    •  Inside  the  Borg  and  Mesos  (Verge)   •  Google  Open  Sources  Its  Secret  Weapon  in  Cloud   CompuVng:  Kubernetes  (Wired)   •  Docker:  hgp://docker.com   •  CoreOS:  hgp://coreos.com   •  Running  Docker  on  Windows  (docker.com)   •  Docker  on  Azure  (azure.com)   •  Omega:  flexible,  scalable  schedulers  for  large  compute   clusters  SIGOPS  EuroSys  2013,  ACM,  pp.  351-­‐364     (Google  Research)