láďa prskavec: docker.io

Post on 06-May-2015

350 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Ladislav  Prskavec  @abtris  -­‐    DEVEL  9.11.2013

�1

Docker  is  an  open-­‐source  project    to  easily  create  lightweight,  portable,  self-­‐sufficient  containers  from  any  applicaHon.  

�2

The  same  container  that  a  developer  builds  and  tests  on  a  laptop  can  run  at  scale,  in  producHon,  on  VMs,  bare  metal,  OpenStack  clusters,  public  clouds  and  more.

�3

�4

BeNer  than  VMs

★ Size

�5

BeNer  than  VMs

★ Size  

★ Performance

�6

BeNer  than  VMs

★ Size  

★ Performance  

★ Portability

�7

BeNer  than  VMs

★ Size  

★ Performance  

★ Portability  

★ Hardware-­‐centric

�8

Escape  dependency  hell

★ Cross-­‐plaRorm  dependencies

�9

Escape  dependency  hell

★ Cross-­‐plaRorm  dependencies  

★ ConflicHng  dependencies

�10

Escape  dependency  hell

★ Cross-­‐plaRorm  dependencies  

★ ConflicHng  dependencies  

★ Custom  dependencies

�11

Here's  a  typical  Docker  build  process  (Dockerfile)

from  ubuntu:12.10  

run  apt-­‐get  update  

run  DEBIAN_FRONTEND=noninteractive  apt-­‐get  install  -­‐q  -­‐y  python  

run  DEBIAN_FRONTEND=noninteractive  apt-­‐get  install  -­‐q  -­‐y  python-­‐pip  

run  pip  install  django  

run  DEBIAN_FRONTEND=noninteractive  apt-­‐get  install  -­‐q  -­‐y  curl  

run  curl  -­‐L  https://github.com/shykes/helloflask/master.tar.gz  |  tar  -­‐xzv  

run  cd  helloflask-­‐master  &&  pip  install  -­‐r  requirements.txt

�12

Under  the  hood

★ GO  

★ The  cgroup  and  namespacing  capabiliHes  of  the  Linux  kernel

�13

Under  the  hood

★ GO  

★ The  cgroup  and  namespacing  capabiliHes  of  the  Linux  kernel  

★ AUFS,  a  powerful  union  filesystem  with  copy-­‐on-­‐write  capabiliHes

�14

Under  the  hood

★ GO  

★ The  cgroup  and  namespacing  capabiliHes  of  the  Linux  kernel  

★ AUFS,  a  powerful  union  filesystem  with  copy-­‐on-­‐write  capabiliHes  

★ lxc,  a  set  of  convenience  scripts  to  simplify  the  creaHon  of  Linux  containers

�15

Zero  downHme  deployment

using  private  registry

�16

�17

App  running  in  prod  hNp://praguejs.cz  !!!

-­‐  Build  local  

>  docker  build  -­‐t=praguejs  .  

-­‐  Test  local  

>  docker  run  -­‐p  49200:3333  praguejs  

hNp://localhost:49200  

-­‐  Change  some  files  

-­‐  Rebuild  &  test  

>  docker  build  -­‐t  praguejs  

>  docker  run  -­‐p  49200:3333  praguejs

vagrant@precise64:~$  docker  ps  CONTAINER  ID                IMAGE                                                                        b2332dffe                      registry.abtris.cz:5000/praguejs:latest  

�18

Push  to  producHon  • Tag  image  in  order  to  push  it>  docker  tag  praguejs  registry.abtris.cz:5000/praguejs  

• Push  image  to  local  registry>  docker  push  registry.abtris.cz:5000/praguejs  

• On  producHon  server,  pull  image>  docker  pull  registry.abtris.cz:5000/praguejs  

• Start  new  container  >  docker  run  -­‐d  -­‐p  127.0.0.1::3333  <image>  

• Change  configuraHon  at  nginx/haproxy  and  restart  

• See  changes  live

vagrant@precise64:~$  docker  ps  CONTAINER  ID                IMAGE                                                                        b2332dffe                      registry.abtris.cz:5000/praguejs:latest    d45222331                      1b4f43asds  

�19

hNp://m.doporucim.cz/Docker

�20

top related