“Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf ·...

39
May 15, 2015 “What the Heck are Linux Containers Anyway?” Ge@ng Started with Docker

Transcript of “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf ·...

Page 1: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

“What  the  Heck  are  Linux  Containers  Anyway?”  

Ge@ng  Started  with  Docker  

       

Page 2: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Let’s  Get  this  Out  of  the  Way  

•  Tony  Garcia  •  ScienIfic  Analyst/Programmer  at    

 Vertex  PharmaceuIcals  in  Boston,  MA  •  @tonyrgarcia  

Page 3: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Back  in  Simpler  Times…  

image:  www.thegeekstuff.com  FTP  

Page 4: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

But  Then…  •  More  languages  •  More  frameworks  •  More  tools  •  More  environments  •  ‘The  Cloud’  •  ConInuous  IntegraIon/Delivery  •  IteraIve  development  •  MORE  COMPLEXITY  

Page 5: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

The  CompaIbility  Matrix  from  Hell  

Page 6: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

“Works  on  My  Machine”  

Page 7: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Early  20th  Century  Shipping  Industry  

Page 8: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Another  Matrix  From  Hell  ? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

Page 9: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Malcolm  Purcell  McLean  •  American  Transport  Entrepreneur  •  Invented  the  Shipping  Container  in  1956    

"Malcolm  McLean  at  railing,  Port  Newark,  1957  (7312751706)"    by  Maersk  Line  -­‐  Malcolm  McLean  at  railing,  Port  Newark,  1957  Uploaded  by  russavia.    Licensed  under  CC  BY-­‐SA  2.0  via  Wikimedia  Commons  –    hkp://commons.wikimedia.org/wiki/File:Malcolm_McLean_at_railing,_Port_Newark,_1957_(7312751706).jpg#/media/File:Malcolm_McLean_at_railing,_Port_Newark,_1957_(7312751706).jpg  

Page 10: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Containers  Standardized  the  Shipping  Yard  

Page 11: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Our  SoluIon  –  Linux  Containers  

Page 12: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Linux  Containers  101  •  Made  possible  by  3  Linux  kernel  features  – Namespaces  

•  Isolated  instances  of  system  resources.  (mnt,  net,  pid,  ipc,  users)  

– Control  Groups  (Cgroups)  •  Grouping  of  resources  and  se@ng  limits  to  memory,  CPU,  block  IO,  etc.  for  each  container.  Containers  map  to  Cgroups  1:1  

– CapabiliIes  •  Fine-­‐grained  control  over  privileges  to  run  processes  

•  Also  -­‐  Union  File  Systems  (UnionFS)  

Page 13: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Linux  Containers  101  

•  Containers  provide  isolated  instances  of  user  space  – Root  file  systems  – Binaries  – Process  trees  (pid0,  init,  systemd,  etc)  

•  Processes  can  only  send  messages  to  other  processes  in  the  same  container.  

– Networking  stacks  •  IP  addresses,  port  range,  rouIng  tables,  etc.  

Page 14: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Linux  Containers  101  •  SeparaIon  of  Concerns  –  Inside  of  Container:  Developer  concerns  

•  Apps,  data,  code,  libs,  package  manager,  etc.  

– Outside  of  Container:  Ops  concerns  •  Network  configuraIon,  logging,  monitoring,  etc.  

•  EncapsulaIon  – Write  and  Configure  once,  run  anywhere  – Self  contained  –  avoids  dependency  conflicts  with  other  containerized  applicaIons.  

Page 15: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Wait…What  about  VMs??  

Page 16: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

VMs  vs.  Containers  

•  VM  –  hypervisor  virtualizaIon  •  Container  –  OS  level  virtualizaIon  

images:  www.docker.com  

Page 17: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Container  Formats  

•  LXC  •  BSD  Jails  •  OpenVZ  •  Linux  V-­‐Server  •  Solaris  Zones  (UNIX)  

Page 18: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Docker  –  A  Linux  Container  Plasorm  

Page 19: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Docker  •  Open  Source  runIme  for  Linux  Containers  •  Developed  by  Solomon  Hykes  as  an  internal  tool  to  manage  Linux  containers  at  dotCloud,  a  PAAS  provider  (now  Docker,  Inc).  

•  Originally  wriken  in  python  •  Rewriken  in  Go  for  open  source  version  •  Demoed  to  the  public  for  the  first  Ime  as  a  lightning  talk  at  PyCon  2013.  

•  Version  1.0  in  Summer  of  2014  

Page 20: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Docker  •  As  of  May  1,  2015  –  21,000+  stars  on  Github  –  900+  commikers  –  Thousands  of  Dockerized  applicaIons.  – Hundreds  of  projects  built  on  top  of  Docker  –  IntegraIons  with  well-­‐known  tools  (Travis,  Jenkins,  Vagrant,  Chef,  Puppet,  OpenStack,  etc)  

– Many  well-­‐known  cloud  providers  jumping  on  the  Docker  bandwagon  (including  AWS,  Google,  Azure,  Rackspace,  Digital  Ocean)  

– Many  Docker-­‐specific  plasorms  and  services  (Tutum,  StackDock,  Quay.io…)    

– Docker  conferences  in  the  US  and  Europe  

Page 21: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Docker  and  ExecuIon  Drivers  

Page 22: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

The  Docker  Plasorm  •  Docker  Engine  – Daemon  (Service)  –  Client  

•  Docker  Registry  –  Public  (hub.docker.com)  –  Private  registry  possible  via  ‘distribuIon’  project  

•  OrchestraIon,  clustering,  and  host  management  tools  –  Compose,  Swarm,  Machine  

Page 23: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Installing  the  Docker  Engine  •  OS  X  and  Windows  –  Install  Boot2Docker  via  installers  (hkp://boot2docker.io/)  

– Sets  up  VirtualBox  (if  not  on  your  system  already)  with  a  VM  running  Tiny  Core  Linux  to  host  Docker  containers.  

•  Linux  – Available  via  package  managers  (apt-­‐get,  yum,  emerge,  zypper,  etc.)  

Page 24: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

The  Docker  Engine  

Page 25: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Demo  Time!  Running  Your  First  Container  

Page 26: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

What  Happened?  

•  Docker  downloaded  the  latest  Ubuntu  image  from  hub.docker.com.  

•  Docker  launched  a  new  container  based  on  the  Ubuntu  image,  including  an  isolated  process  tree  and  root  file  system  (enIrely  in  memory)  

•  Within  the  container,  it  executed  the  specified  command,  and  the  result  was  visible  in  stdout.  

•  Once  the  echo  process  terminated,  the  container  was  stopped.  

Page 27: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Demo:  Running  Persistent  Processes  in  Containers  

Page 28: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Copy-­‐on  Write  and  UnionFS  •  In  Linux,  the  rooss  changes  to  read-­‐write  mode  axer  mounIng  and  integrity  check  

•  In  containers,  rooss  is  read-­‐only.  •  A  writeable  layer  is  available  for  copy-­‐on-­‐write.  – When  a  process  edits  a  file,  the  appropriate  file(s)  are  copied  to  the  write  layer  for  ediIng.  New  files  are  placed  in  this  top  layer  

–  Files  in  upper  layers  ‘override’  those  in  lower  layers  •  Many  ‘flavors’:  AuFS  (default  on  Linux),  devicemapper  (CentOS,  RH),  overlay  

Page 29: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Docker  Container  Layers  

Page 30: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Using  Dockerfiles  •  Dockerfile  –  plain  text  file  that  is  comprised  of  human-­‐readable  instrucIons  on  how  to  build  a  Docker  image.  

•  Enables  the  automaIon  of  construcIng  images  via  the  ‘docker  build’  command  

•  LocaIon  of  file  can  be  anywhere  but  it’s  important  in  relaIon  to  its  build  context.  

Page 31: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Example  Dockerfile  

docker  build  -­‐t  simpleserver:0.1  .  

Page 32: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Demo:  Building  Images  from  Dockerfiles  

Page 33: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Docker  Compose  

•  Docker  Compose  is  an  container  orchestraIon  tool  which  lets  users  easily  assemble  applicaIons  made  up  of  linked  containers  

•  Services  that  make  up  the  applicaIon  are  defined  in  a  .yml  file  

 

Page 34: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Demo:  Se@ng  up  a  MulI-­‐Container  ApplicaIon  using  Docker  Compose  

Page 35: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Demo:  Deploying  a  Dockerized  ApplicaIon  to  a  Cloud  Provider  

Page 36: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Docker  and  Microservice  Architecture  

Page 37: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

The  Docker  Partner  Ecosystem  

Page 38: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

Resources  •  Docker.com  &  hub.docker.com  •  hkps://github.com/docker/  •  Docker  blog  and  weekly  newsleker  – blog.docker.com  – blog.docker.com/docker-­‐weekly-­‐archives/  

•  meetup.com/Docker-­‐Online-­‐Meetup/  •  Dockercon  &  DockerCon  EU  videos  on  YouTube  

•  Twiker:  @docker    

Page 39: “Whatthe$Heck$are$Linux$ Containers$Anyway?”$files.meetup.com/18477219/docker_preso.pdf · May$15,$2015$ Linux$Containers$101$ • Made$possible$by$3$Linux$kernel$features$ –

May  15,  2015  

QuesIons?