Introduction to Docker

Amjith Ramanujam (New Relic) (@amjithr)

Typical Stack

  • Django
  • Apache/gunicorn
  • Celery
  • Redis/DB

Deployment environment doesn't always match dev environment...

What is Docker?

  • DotCloud -> Docker Inc
  • Started in January 2013
  • Written in Go
  • Similar to chroot, BSD jails, Solaris Zones... a little sandbox
  • Uses Linux Containers (in kernel for ~5 years)
  • AUFS
    • Union file system
    • Copy on write
  • Git-like versioning
  • REST API

Why?

  • Lightwieght
  • isolated instances
  • faster than VMs
    • startup in < 1s

Setup

  • docs.docker.io
  • OS X: boot2docker (~25 MB VM) + docker client

Demo Commands

$ docker images
    $ docker run
    $ docker run -d ... # run in daemon mode
    $ docker commit
    $ docker push
    $ docker run -p ...  # bind port

Dockerfile

Fortunate Cow

    FROM base
    ENV TEST_ENV true
    ADD test_file /
    RUN apt-get update
    RUN apt-get install -y fortune cowsay
    CMD fortune | cowsay