Docker
Build, Ship, Run
Outline
What is Docker?
Who supports it?
Who uses it?
VM vs Containers
Why docker?
What is Docker?
Docker containers wrap up a piece of software in a
complete filesystem that contains everything it
needs to run: code, runtime, system tools, system
libraries – anything you can install on a server. This
guarantees that it will always run the same,
regardless of the environment it is running in.
Simplified `what is Docker`?
Docker is a portable virtual
environment which contains all
the app dependencies.
The growth
24,676 github stars
> 1,000 contributors
150 projects built on top of docker
UIs, mini-PaaS, Remote Desktop….
1000’s of Dockerized applications
Python, Memcached, Redis, Node.js…
Integration in Jenkins, Travis, Chef, Puppet, Vagrant and OpenStack
Meetups arranged around the world…with organizations like Ebay, Uber, Mozilla,
History
Initial release
Stable release
13 March 2013
12 August 2015
Who supports it?
Amazon ecs (Amazon EC2 Container Service)
Google Cloud Computing
Digital Ocean
Microsoft Azure
Heroku
Engine Yard
Who use docker in production?
VM vs Containers
Why docker?
Lightweight
Fast
Secure
Accelerate Developer Onboarding
Configure once, run everywhere
Eliminate Environment Inconsistencies
Lightweight
Smaller in size
Re-usable base images (Sounds like equivalent to VM)
Faster to launch
Shared resource
Fast
You can start, stop, and manage thousands
of containers in seconds in amazon ecs.
Scale as you need it
Need to understand docker layers
Docker layers
Docker images are read-only templates from which
Docker containers are launched.
Each image consists of a series of docker layers.
Docker makes use of union file systems to combine
these layers into a single image.
Docker layers
Ubuntu 12.04
Python 2.7
Project base
Ubuntu 12.04
Mysql 5.6
Patch
Docker layers
Ubuntu 12.04
Python 2.7
Project 1 base
Patch
Ubuntu 12.04
Python 2.7
Project 2 base
How it is different from VM images?
Setup environment with VM
Build the project from image
Provisioning on top of an image
Maintaining VM image
Upload the whole image if it changed
For others download the whole VM
Provisioning VM
Scripts has to be idempotent
And environment setup will depend on
3rd party sources
Why it takes to build VM?
Network
Downloading from different sources
Build
Compile and configure
How about a local docker registry?
Author
A.K.M. ASHRAFUZZAMAN
ENGINEERING MANAGER, NEWSCRED

Docker