Docker

27
Anil Wadghule [email protected] February 2014 — Docker 0.8.0

description

Gave talk on Docker at Pune Ruby Users Group meetup. Also at Docker Pune meetup.

Transcript of Docker

Page 1: Docker

Anil Wadghule [email protected]

February 2014 — Docker 0.8.0

Page 2: Docker

Docker

• Docker was started by Solomon Hykes as an internal project by dotCloud

• Docker makes Linux Containers easy to use

Page 3: Docker

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

Page 4: Docker

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

Page 5: Docker

Docker popularity

• 330+ Contributors,

• 50,000+ docker index pull,

• 1000’s of Dockerized applications

• Integration in Jenkins, Travis, Chef, Puppet, Vagrant & OpenStack

Page 6: Docker

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

Page 7: Docker

N x N compatibility nightmare

Problem: shipping code

Page 8: Docker

Solution

• The Linux Container

Page 9: Docker

This eliminated the N x N problem

Page 10: Docker

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

Page 11: Docker

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.

Page 12: Docker

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

Page 13: Docker

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

Page 14: Docker

Docker architecture

DOCKER

LAYER FS

LXC

CGROUPS

LINUX KERNEL

NAMESPACES

Page 15: Docker

Container vs. VMs

Page 16: Docker

Docker operating system?

• Doesn’t include operating system

• Relies on operating system functionality provided by underlying infrastructure

Page 17: Docker

Requirements

• Linux kernel 3.8 & above

• AUFS

• LXC

• 64-bit

Page 18: Docker

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)

Page 19: Docker

Installation: boot2docker

• On Mac$ brew install boot2docker $ boot2docker init $ boot2docker up $ export DOCKER_HOST=tcp:// $ docker run -i -t busybox sh #/

Page 20: Docker

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

Page 21: Docker

Demo

Page 22: Docker

• 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?

Page 23: Docker

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

Page 24: Docker

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

Page 25: Docker

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

Page 26: Docker

Questions

Page 27: Docker

Thank you !!!Follow me on Twitter

@anildigital