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

Docker

anildigital
January 18, 2014

 Docker

anildigital

January 18, 2014
Tweet

More Decks by anildigital

Other Decks in Technology

Transcript

  1. Docker • Docker was started by Solomon Hykes as an

    internal project by dotCloud • Docker makes Linux Containers easy to use
  2. What is Docker? “Docker is an open source engine to

    easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more” - http://docker.io
  3. Why Docker? • Deploy everything (webapps, backends, sql, big data,

    message queues) • Deploy almost everywhere (Linux servers, VMs or bare metal, any distro, Kernel 3.8) • Deploy reliably & consistently (local and on server same) • Deploy easily • Deploy at scale
  4. Docker popularity • 330+ Contributors, • 50,000+ docker index pull,

    • 1000’s of Dockerized applications • Integration in Jenkins, Travis, Chef, Puppet, Vagrant & OpenStack
  5. The challenge • Static website, User DB, Queue, Background workers,

    Analytics DB, API endpoint, Web Frontend • Development VM, QA Server, Public cloud, Production Servers, Customer data center, Production cluster • Running apps in multiple environments results in N x N nightmare
  6. What is LXC? • Lightweight Linux Container (LXC) • Operating

    system level virtualisation method for running multiple isolated Linux systems • Provides way to run mini Linux systems within another Linux systems • http://en.wikipedia.org/wiki/LXC
  7. LXC • I can SSH into it • I have

    root access • I can apt-get/yum install packages • Speed: boots in seconds • Footprint: 100-1000 containers on one machine. Small disk requirements.
  8. Control groups & namespaces • LXCs makes use of control

    groups & namespaces • Linux kernel feature to limit, account and isolate resource usage, such as 
 — CPU 
 — Memory 
 — Disk I/O
  9. Docker • Docker is API on top of LXC •

    Docker runs as daemon • Docker makes Linux Containers easy to use (LXC) • Docker service exposes REST api that is used by Docker client
  10. Docker operating system? • Doesn’t include operating system • Relies

    on operating system functionality provided by underlying infrastructure
  11. Installation • Can be directly installed on supported Linux distros.

    • Supported Ubuntu versions
 
 Ubuntu Precise 12.04 (LTS) (64-bit) 
 Ubuntu Raring 13.04 and Saucy 13.10 (64 bit)
  12. Installation: boot2docker • On Mac
 
 $ brew install boot2docker


    $ boot2docker init
 $ boot2docker up
 $ export DOCKER_HOST=tcp://
 $ docker run -i -t busybox sh
 #/
  13. Installation: Vagrant • Clone the docker repository 
 $ git

    clone https://github.com/dotcloud/docker.git • Startup the vagrant image 
 $ vagrant up • SSH into the image 
 $ vagrant ssh • Use docker in VM
 $ docker • Vagrant client works on Mac
  14. • Downloaded the image from docker repo • Generated a

    new LXC container • Created a new file system • Mounted a read/write layer • Allocated network interface • Setup IP Setup NATing • Executed the bash shell in the container • ** All under a very few minutes What Docker has done?
  15. Advantages • Elegant application delivery • Throwable sandboxes • Create

    uniform development & production environments • Automated testing and continuous integration/deployments • Deploying and scaling web apps, databases and backend services
  16. Why developers care? • Build once, write everywhere • Clean,

    safe, hygienic and portable runtime environment for app • No worries about missing dependencies during subsequent deployments • Reduce / eliminate compatibility concerns on different platforms
  17. Recommended workflow • Each service will be in its own

    container(s) • Build an image for each service • Pin dependencies (packages etc.) accurately. • Link services together