SlideShare a Scribd company logo
Persistent, stateful services with docker
clusters, namespaces and docker volume
magic
Michael Neale
Co-founder, CloudBees (that Jenkins
company)
Agenda
Supercontainers and storage
Privileges
It’s all files (part 2)
Controlling the host and peer containers
Storage engines
Stateful docker clusters
“off the shelf” cluster scheduling
The solution chosen
Other tools out there
Credits…
Background
Use-case for stateful services
Docker volumes
Quick namespaces revision
nsenter
Mounts and Volumes
It’s all files (part 1)
the mount namespace
creating bind mounts
docker volume api (use it!)
Background
The Need for Stateful Services
Basis of this presentation:
.. was learned while building an elastic and scalable
Jenkins based product for multiple cloud environments, on
docker
—Michael Neale
“No containers were hurt as
part of this production.”
5
My history with docker
6
Ex Red Hat where I heard about “control groups”
Starting CloudBees, looking at ways to fairly multi tenant
Later would discover (and with much help) use LXC
Saw a video of Solomon demoing docker and didn’t believe it
Still didn’t believe it
For the longest time didn’t believe it
CloudBees & Docker
7
Actually spoke about this at DockerCon 2014 (the first one!)
cgroups -> LXC -> LXC + ZFS copy-on-write
Like dotCloud - ran a PaaS (as well as CI/CD toolchain)
In 2014 moved to focus on CI/CD (dotCloud focussed on docker)
In 2014 moved to adopt docker over LXC (and ZFS)
Using: Docker Hub (private repos), Private Registry
Many of our customers are commercial users of docker
Docker Jenkins plugins: docker hub, build and publish and many more
8
Put all the things (OSS and commercial) on docker hub
9
I started the “official” jenkins image early on
updated now ~weekly (with LTS images also)
10
one MEEELION ??
A stateless cluster of apps is the dream
11
But the reality is, many apps still need state, a disk
Databases for example
Hands up who would run Oracle on NFS?
Reality: local disk
Network filesystems are great*
But sometimes you need the data close to the processing
EBS, HDFS, GCP, OpenStack block storage…
BUT: how to balance this need for local state with “ephemeral” servers
Servers come and go, need to restore the data (fast)
Need to backup the data (delta/snapshots - fast)
Alternatives: SANs (reattach volumes to replacement nodes, some
clouds also support this)
Reason for backups: resilience. Volumes can disappear too.
Current product
13
Years of experience with containers
EC2, ZFS, EBS, LXC
learn from it to build something new and “turn key” installable,
powered by docker
I accidentally created a cluster scheduler (it happens.. please don’t)
An evolved “pre-docker” system
Aim: a new product
14
A distributed Jenkins cluster
10000s of “masters”, 100000s of elastic build workers
Utilise “Off The Shelf” expertise based around docker: Mesos, Docker
Swarm, Kubernetes
Work within existing constraints of a lively and evolving open source
project
(this means accepting local disk state… for now)
Additional Constraints
Only want to depend on docker being present on “worker nodes”
Off the shelf cluster scheduler
Use local disk*
Multiple target clouds to be supported
Multiple storage “engines” to be supported
* Would love to refactor to DB backed
“Storage engines?”
“The thing that backs up and restores local disks”
eg: EBS (snapshots), rsync, NFS, ZFS send …
Same cluster management, same api, different storage tech for different
clouds/needs.
Ensures volumes are backed up in a consistent state (using LVM
snapshot, xfs_freeze, as needed)
Docker volumes
17
Docker helpfully lets you bind mount to host
Giving you a choice of ways to get data to the host
Containers can remain ephemeral
However, you need to manage those underlying volumes
Note: you shouldn’t need to do what I did. Use something off the shelf if
you can. If you must, there is an excellent docker plugin api and volume
plugin api.
Solving local disk with docker
client cluster sched. docker host storage
r
u
n
n
request app
find free slot
ask for data
provide data
Container fully running with data
Using “trickery”
client cluster sched. docker host storage
r
u
n
n
request app
find free slot
request data
provide data,
bind mount
container starts,
asks for dynamic
bind mount,
waits
With docker volume plugin api
client cluster sched. docker host storage
r
u
n
n
request app
find free slot
json
provide data
docker calls
volume plugin
BEFORE
container starts,
launches with
bind mount
However: Docker plugin api did not exist yet!
21
I had to make do with “trickery”
Other choices like powerstrip existed, but wanted “standard” docker
And you are here for namespace trickery
So lets learn from it…
—Unknown
“Hard work pays off
eventually, but laziness pays
off right now.”
22
Namespaces - really quick…
23
Along with cgroups are “foundational tech” for containers
6 types: Mount, UTS, IPC, PID, Network and User
My favourites:
Mount: filesystem stuff (that I used)
PID, Network and the exciting User namespaces!
https://lwn.net/Articles/531114/
How do we access these namespaces?
24
nsenter - command line tool
nsenter allows you to “enter” a namespace and do something in the
context of it
Available out of the box in many linux distros now
https://github.com/karelzak/util-linux/blob/master/sys-utils/nsenter.c
https://blog.docker.com/tag/nsenter/
Mounts and Volumes
It’s all files in Linux - part 1
Mount namespace
26
Containers don’t see all mount points, all devices, just their own
Allows dockers “bind mount” to work
A “bind mount” in linux is really an “alternative view of an existing
directory tree”
A docker bind mount takes that “alternative view” and makes it visible
to the container (via its mount name space)
Magic? No. Linux.
It’s all files, part 1
27
Start any container
Access docker host and run this to get the pid of the whole container:
docker inspect --format {{.State.Pid}} <container id>
You can then see the 6 namespaces in /proc/<PID>/ns:
ls /proc/7865/ns/
ipc mnt net pid user uts
/proc virtual filesystem and nsenter
28
/proc is a virtual filesystem (http://www.tldp.org/LDP/Linux-
Filesystem-Hierarchy/html/proc.html)
Run a command inside a given containers namespace:
nsenter --mount=/proc/$PID/ns/mnt --
/usr/bin/command param
RUN A COMMAND FROM HOST AS IF YOU ARE IN THAT CONTAINER
—SpidermansUncle
“With great nsenter power,
comes great responsibility ”
29
Creating a bind mount on a running container
30
( -v /var/foo:/var/bar ) High level steps:
Get the underlying device from the host, into the container
mount the device in the container
bind mount in the container to the “directory you want”
unmount the device in container
remove the initial mount
What you are left with: a bind mount to the volume on the host you
wanted in the first place, and only that path. Not the whole device/volume
on host.
You don’t need to do all this yourself, ever!
31
32
# Using a device’s numbers we can create the same device in container
# use nsenter to create a device file IN the container (using its $PID):
nsenter --mount=/proc/$PID/ns/mnt -- mknod --mode 0600 /dev/sda1 b 8
0
# Now we have the device ALSO in the container!
# We can mount it (normal linux)
# bind mount to the desired directory (also normal linux)!
# all from the host
I told you not to panic!
33
Now we have a dynamic bind mount
34
As if we used -v /var/foo:/var/bar on startup
Remember: DON’T DO THIS!
Really: you shouldn’t need to do this yourself.
Use the docker plugin volume api! (if you must)
Docker plugin API
35
Out of process JSON based api (but running on same host)
plugins are installed by putting a file in a directory, and referred by
name (minutes the extension)
Well defined JSON protocol
https://docs.docker.com/extend/plugin_api/
Docker volume plugin API
36
docker run -v volumename:/data --volume-driver=mydriver ..
“volumename” is passed to the registered volume-driver
(which is listening on http)
volume-driver then prepares the data somewhere on the host, returns
where it lives (via json)… docker then bind mounts it in as /data
All happens BEFORE container starts
https://docs.docker.com/extend/plugins_volume/
Docker volume plugin API
37
Would not require messing with namespaces
Still allow an out of process “volume service” to take care of messy
volume details
However - DOES require you to register the plugin with docker on the
host
And less terrifying fun than nsenter and namespaces
If you really must
38
https://github.com/michaelneale/bind-mount-supercontainer
Sample python code that I prototyped this with. Use with care!
Supercontainers
and storage engines
Like containers, only more… uh super…
Supercontainers - concept
40
Term came from Red Hat
http://developerblog.redhat.com/2014/11/06/introducing-a-super-
privileged-container-concept/
You have heard of privileged containers?
docker run --privileged ..
Drops all namespace restrictions
“Super privileged containers” add in more access to the underlying
host…
It’s all files (part 2)
41
Add in the host root filesystem, docker daemon, and all the rest:
docker run -v /var/run/docker.sock:/var/run/docker.sock
—privileged
-v /:/media/host
my-super-container
Brings in docker socket, and root as /media/host
/media/host then contains ALL devices, virtual files, /proc etc
It’s all files (part 2)
42
Why?
We can do everything we did with nsenter before but from WITHIN a
“peer container”
43
It’s all files (part 2)
44
We can do everything we did with nsenter before but from WITHIN a
“peer container”
Remember requirements: vanilla docker, only docker installed on host
Use super-container as a “agent” container, do all the automation you
could want
No need for extra bits on the host box
Allows using “off the shelf” cluster scheduling (only docker need be
installed)
Controlling the host
45
Host can be accessed from super-container via nsenter
PID of host is 1!
eg, from super-container, get all mounts:
nsenter --mount=/media/host/proc/1/ns/mnt -- cat
/proc/mounts
Run a command, from container, on the host (stuff after “--")
/media/host lets us get to the host. Even devices.
Controlling the host
46
Host can be accessed from super-container via nsenter
Do all the steps as before, but with “nsenter —
mount=/media/host/proc/1/ns/mnt” prefixed
Controlling peer containers from supercontainer
47
Peers are other “ordinary” containers on the same host as the super
container
Peers can be accessed from super-container also via nsenter
Just like before, we use nsenter, with the peer containers $PID
But prefix it with the hosts filesystem:
nsenter --mount=/proc/$PID/ns/mnt -- ..
becomes:
nsenter --mount=/media/host/proc/$PID/ns/mnt -- ..
Controlling peer containers
48
Why?
Once again, use he super-container as the controlling agent on a host
Less bits to install on the host
Storage engines
49
My requirement: multiple implementations for different clouds
Different clouds have different storage engines
Super container great place to host volume service
Different implementations on service depending on what is on offer
EBS, NFS, openstack rsync and more
This “volume service super-container” is responsible for
backup/restore
Storage engines - eg an AWS region
50
zone-1 zone-2
serverA serverBserverA serverB
vol-1 vol-2
vol-1vol-1 vol-1vol-2
snapshots
request backup
Snapshots/backups
51
Snapshots a cheap and quick
Zone resilience
Volumes (ie: disks) are not as durable as snapshots/backups
Similar in other platforms: GCP, OpenStack, Azure.
Google compute persistent disks: does allow volumes read-only extra
mounts across instances for redundancy of compute nodes
In our case: failing over is “restoring from backup” - always test your
backups!
Supercontainers - summary
52
A useful tool for low level control
No need to install bits on the host
Can control peers directly
Could be a great place to host a docker volume plugin implementation
(not currently recommended in Docker plugin api docs)
Stateful clusters
Everyone wants to be stateless…
What we built…
.. an elastic and scalable Jenkins based product for
multiple cloud environments, on docker
Cluster schedulers/managers
55
Remember: I have build schedulers before, would rather not again
Docker Swarm, Mesos/Marathon, Kubernetes etc
Some have concepts of volumes
All can schedule “plain” docker containers
Super containers can give you a way to get lower level access
What we settled on
56
Super containers to implement volume service
Support for multiple storage engines for different clouds
Scheduled via mesos+marathon
Only docker (+ mesos in this case) required on the hosts
Why mesos: practical choice for us but not a tight coupling
(could mesos be in a super container? probably)
Using containers for all the things: elastic search nodes, builds, even
haproxy
For us, 5 minute or event based backups/snapshots are fine
Running supercontainers
57
Eg. marathon: schedule a super container to run on each host
Constraint on volume service: one per host, size: number of servers in
cluster (3 in this case):
vol service vol servicevol service
master master
elastic search
haproxy
(free)
Working with EBS (an example)
client container volume service EBS api
requests backup
freeze for snapshot
initiate snapshot
unfreeze backup delta,
copy to s3
optimisation: use LVM snapshot instead of freeze
Backups, backups
59
Servers are ephemeral
Servers come and go
Disks are fallible (even if cloud platforms call them “volumes”)
Workload moves around
Restore data when workload is moved to a new location
Delta backups are used to avoid full copies each time
Cluster schedulers/managers
60
Storage awareness is being built in increasingly
(Kubernetes volumes, mesos storage awareness)
Ideal world: your cluster manager will do all this for you.
If you live in that world: congrats.
Make yourself a cocktail:
My recipe for no-sugar old fashioned:
https://gist.github.com/michaelneale/60341
45
61
“off the shelf” stateful volume tools
62
Rexray: use volume plugin api for Amazon EBS, Rackspace and more
Flocker from ClusterHQ
Kubernetes volume support
Apache “Mysos”: MySQL service backed up to HDFS on mesos
Tutum from Docker! has support for persistent volumes
Watch this space… (changing constantly)
https://docs.clusterhq.com/en/1.4.0/labs/docker-plugin.html
https://github.com/emccode/rexray
Stateful volumes summary
63
It is possible with docker
Avoid doing it yourself is someone else already has
Using local filesystem directly does feel a bit like “legacy”
But it is a reality for some apps (especially database services)
Lovely to port everything to be stateless, database backed, blobstore
backed, but it takes time
Lean on the capabilities of the underlying platform where you can
Credits
64
Jérôme Petazzoni (@jpetazzo) - years of inspirational blog posts, hacks on
linux/docker/volumes. And great hair.
http://jpetazzo.github.io/2015/01/13/docker-mount-dynamic-volumes/ -
BTW Jerome - it works for real!
Red Hat for Super Container concepts: Daniel Walsh:
http://developerblog.redhat.com/2014/11/06/introducing-a-super-privileged-
container-concept/
Trevor Jay from Red Hat for some final namespace tips
https://securityblog.redhat.com/author/tjay/
I really just mashed up the above concepts:
https://michaelneale.blogspot.com.au/2015/02/mounting-devices-host-
from-super.html
@jpetazzo’s hair - imminent singularity?
0
45
90
135
180
225
2012 2013 2014 2015
Region 1
65
Thank you!
Michael Neale
@michaelneale
mneale@cloudbees.com

More Related Content

What's hot

The ABC of Docker: The Absolute Best Compendium of Docker
The ABC of Docker: The Absolute Best Compendium of DockerThe ABC of Docker: The Absolute Best Compendium of Docker
The ABC of Docker: The Absolute Best Compendium of Docker
Aniekan Akpaffiong
 
Docker 101 Checonf 2016
Docker 101 Checonf 2016Docker 101 Checonf 2016
Docker 101 Checonf 2016
Patrick Chanezon
 
Docker Roadshow 2016
Docker Roadshow 2016Docker Roadshow 2016
Docker Roadshow 2016
Docker, Inc.
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetes
Dongwon Kim
 
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
Michelle Antebi
 
Docker in pratice -chenyifei
Docker in pratice -chenyifeiDocker in pratice -chenyifei
Docker in pratice -chenyifei
dotCloud
 
Docker SF Meetup January 2016
Docker SF Meetup January 2016Docker SF Meetup January 2016
Docker SF Meetup January 2016
Patrick Chanezon
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to Docker
Jian Wu
 
virtualization-vs-containerization-paas
virtualization-vs-containerization-paasvirtualization-vs-containerization-paas
virtualization-vs-containerization-paas
rajdeep
 
Docker and stuff
Docker and stuffDocker and stuff
Docker and stuff
Varun Sharma
 
Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetes
Dr Ganesh Iyer
 
Containers vs. VMs: It's All About the Apps!
Containers vs. VMs: It's All About the Apps!Containers vs. VMs: It's All About the Apps!
Containers vs. VMs: It's All About the Apps!
Steve Wilson
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
Hao Fan
 
Docker for the new Era: Introducing Docker,its components and tools
Docker for the new Era: Introducing Docker,its components and toolsDocker for the new Era: Introducing Docker,its components and tools
Docker for the new Era: Introducing Docker,its components and tools
Ramit Surana
 
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
dotCloud
 
Docker HK Meetup - 201707
Docker HK Meetup - 201707Docker HK Meetup - 201707
Docker HK Meetup - 201707
Clarence Ho
 
Introduction to Docker and deployment and Azure
Introduction to Docker and deployment and AzureIntroduction to Docker and deployment and Azure
Introduction to Docker and deployment and Azure
Jérôme Petazzoni
 
Docker & kubernetes
Docker & kubernetesDocker & kubernetes
Docker & kubernetes
NexThoughts Technologies
 
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Patrick Chanezon
 
Learning Docker with Thomas
Learning Docker with ThomasLearning Docker with Thomas
Learning Docker with Thomas
Thomas Tong, FRM, PMP
 

What's hot (20)

The ABC of Docker: The Absolute Best Compendium of Docker
The ABC of Docker: The Absolute Best Compendium of DockerThe ABC of Docker: The Absolute Best Compendium of Docker
The ABC of Docker: The Absolute Best Compendium of Docker
 
Docker 101 Checonf 2016
Docker 101 Checonf 2016Docker 101 Checonf 2016
Docker 101 Checonf 2016
 
Docker Roadshow 2016
Docker Roadshow 2016Docker Roadshow 2016
Docker Roadshow 2016
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetes
 
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
 
Docker in pratice -chenyifei
Docker in pratice -chenyifeiDocker in pratice -chenyifei
Docker in pratice -chenyifei
 
Docker SF Meetup January 2016
Docker SF Meetup January 2016Docker SF Meetup January 2016
Docker SF Meetup January 2016
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to Docker
 
virtualization-vs-containerization-paas
virtualization-vs-containerization-paasvirtualization-vs-containerization-paas
virtualization-vs-containerization-paas
 
Docker and stuff
Docker and stuffDocker and stuff
Docker and stuff
 
Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetes
 
Containers vs. VMs: It's All About the Apps!
Containers vs. VMs: It's All About the Apps!Containers vs. VMs: It's All About the Apps!
Containers vs. VMs: It's All About the Apps!
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker for the new Era: Introducing Docker,its components and tools
Docker for the new Era: Introducing Docker,its components and toolsDocker for the new Era: Introducing Docker,its components and tools
Docker for the new Era: Introducing Docker,its components and tools
 
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
 
Docker HK Meetup - 201707
Docker HK Meetup - 201707Docker HK Meetup - 201707
Docker HK Meetup - 201707
 
Introduction to Docker and deployment and Azure
Introduction to Docker and deployment and AzureIntroduction to Docker and deployment and Azure
Introduction to Docker and deployment and Azure
 
Docker & kubernetes
Docker & kubernetesDocker & kubernetes
Docker & kubernetes
 
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
 
Learning Docker with Thomas
Learning Docker with ThomasLearning Docker with Thomas
Learning Docker with Thomas
 

Viewers also liked

DockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker Brings
DockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker BringsDockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker Brings
DockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker Brings
Docker, Inc.
 
Docker for Ops: Docker Storage and Volumes Deep Dive and Considerations by Br...
Docker for Ops: Docker Storage and Volumes Deep Dive and Considerations by Br...Docker for Ops: Docker Storage and Volumes Deep Dive and Considerations by Br...
Docker for Ops: Docker Storage and Volumes Deep Dive and Considerations by Br...
Docker, Inc.
 
Persistent Data Storage for Docker Containers by Andre Moruga
Persistent Data Storage for Docker Containers by Andre MorugaPersistent Data Storage for Docker Containers by Andre Moruga
Persistent Data Storage for Docker Containers by Andre Moruga
Docker, Inc.
 
Docker 1.11 Meetup: Networking Showcase
Docker 1.11 Meetup: Networking ShowcaseDocker 1.11 Meetup: Networking Showcase
Docker 1.11 Meetup: Networking Showcase
Docker, Inc.
 
DockerCon EU 2015: Docker Monitoring
DockerCon EU 2015: Docker MonitoringDockerCon EU 2015: Docker Monitoring
DockerCon EU 2015: Docker Monitoring
Docker, Inc.
 
DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...
DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...
DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...
Docker, Inc.
 
A New Centralized Volume Storage Solution for Docker and Container Cloud by W...
A New Centralized Volume Storage Solution for Docker and Container Cloud by W...A New Centralized Volume Storage Solution for Docker and Container Cloud by W...
A New Centralized Volume Storage Solution for Docker and Container Cloud by W...
Docker, Inc.
 
Docker Meetup: Docker Networking 1.11 with Madhu Venugopal
Docker Meetup: Docker Networking 1.11 with Madhu VenugopalDocker Meetup: Docker Networking 1.11 with Madhu Venugopal
Docker Meetup: Docker Networking 1.11 with Madhu Venugopal
Docker, Inc.
 
Docker Networking Deep Dive
Docker Networking Deep DiveDocker Networking Deep Dive
Docker Networking Deep Dive
Docker, Inc.
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
Ganesh Samarthyam
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
Docker, Inc.
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
azole Lai
 
Using SaltStack to orchestrate microservices in application containers at Sal...
Using SaltStack to orchestrate microservices in application containers at Sal...Using SaltStack to orchestrate microservices in application containers at Sal...
Using SaltStack to orchestrate microservices in application containers at Sal...
Love Nyberg
 
LCA 2013 - Baremetal Provisioning with Openstack
LCA 2013 - Baremetal Provisioning with OpenstackLCA 2013 - Baremetal Provisioning with Openstack
LCA 2013 - Baremetal Provisioning with Openstack
Devananda Van Der Veen
 
Orchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStackOrchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStack
Love Nyberg
 
ONIE LinuxCon 2015
ONIE LinuxCon 2015ONIE LinuxCon 2015
ONIE LinuxCon 2015
Curt Brune
 
Stateful Containers: Flocker on CoreOS
Stateful Containers: Flocker on CoreOSStateful Containers: Flocker on CoreOS
Stateful Containers: Flocker on CoreOS
ClusterHQ
 
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Samuel Fortier-Galarneau
 
Docker Swarm Cluster
Docker Swarm ClusterDocker Swarm Cluster
Docker Swarm Cluster
Fernando Ike
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
Satpal Parmar
 

Viewers also liked (20)

DockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker Brings
DockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker BringsDockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker Brings
DockerCon EU 2015: Cultural Revolution - How to Mange the Change Docker Brings
 
Docker for Ops: Docker Storage and Volumes Deep Dive and Considerations by Br...
Docker for Ops: Docker Storage and Volumes Deep Dive and Considerations by Br...Docker for Ops: Docker Storage and Volumes Deep Dive and Considerations by Br...
Docker for Ops: Docker Storage and Volumes Deep Dive and Considerations by Br...
 
Persistent Data Storage for Docker Containers by Andre Moruga
Persistent Data Storage for Docker Containers by Andre MorugaPersistent Data Storage for Docker Containers by Andre Moruga
Persistent Data Storage for Docker Containers by Andre Moruga
 
Docker 1.11 Meetup: Networking Showcase
Docker 1.11 Meetup: Networking ShowcaseDocker 1.11 Meetup: Networking Showcase
Docker 1.11 Meetup: Networking Showcase
 
DockerCon EU 2015: Docker Monitoring
DockerCon EU 2015: Docker MonitoringDockerCon EU 2015: Docker Monitoring
DockerCon EU 2015: Docker Monitoring
 
DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...
DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...
DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...
 
A New Centralized Volume Storage Solution for Docker and Container Cloud by W...
A New Centralized Volume Storage Solution for Docker and Container Cloud by W...A New Centralized Volume Storage Solution for Docker and Container Cloud by W...
A New Centralized Volume Storage Solution for Docker and Container Cloud by W...
 
Docker Meetup: Docker Networking 1.11 with Madhu Venugopal
Docker Meetup: Docker Networking 1.11 with Madhu VenugopalDocker Meetup: Docker Networking 1.11 with Madhu Venugopal
Docker Meetup: Docker Networking 1.11 with Madhu Venugopal
 
Docker Networking Deep Dive
Docker Networking Deep DiveDocker Networking Deep Dive
Docker Networking Deep Dive
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
Using SaltStack to orchestrate microservices in application containers at Sal...
Using SaltStack to orchestrate microservices in application containers at Sal...Using SaltStack to orchestrate microservices in application containers at Sal...
Using SaltStack to orchestrate microservices in application containers at Sal...
 
LCA 2013 - Baremetal Provisioning with Openstack
LCA 2013 - Baremetal Provisioning with OpenstackLCA 2013 - Baremetal Provisioning with Openstack
LCA 2013 - Baremetal Provisioning with Openstack
 
Orchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStackOrchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStack
 
ONIE LinuxCon 2015
ONIE LinuxCon 2015ONIE LinuxCon 2015
ONIE LinuxCon 2015
 
Stateful Containers: Flocker on CoreOS
Stateful Containers: Flocker on CoreOSStateful Containers: Flocker on CoreOS
Stateful Containers: Flocker on CoreOS
 
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
Decorators Explained: A Powerful Tool That Should Be in Your Python Toolbelt.
 
Docker Swarm Cluster
Docker Swarm ClusterDocker Swarm Cluster
Docker Swarm Cluster
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
 

Similar to DockerCon EU 2015: Persistent, stateful services with docker cluster, namespaces and docker volume magic.

Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Codemotion
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
Carlo Bonamico
 
Using Docker with OpenStack - Hands On!
 Using Docker with OpenStack - Hands On! Using Docker with OpenStack - Hands On!
Using Docker with OpenStack - Hands On!
Adrian Otto
 
Drupalcamp es 2013 drupal with lxc docker and vagrant
Drupalcamp es 2013  drupal with lxc docker and vagrant Drupalcamp es 2013  drupal with lxc docker and vagrant
Drupalcamp es 2013 drupal with lxc docker and vagrant
Ricardo Amaro
 
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ElasTest Project
 
Hands on introduction to docker security for docker newbies
Hands on introduction to docker security for docker newbiesHands on introduction to docker security for docker newbies
Hands on introduction to docker security for docker newbies
Yigal Elefant
 
Docker
DockerDocker
Docker
Brian Hogan
 
From Monolith to Docker Distributed Applications
From Monolith to Docker Distributed ApplicationsFrom Monolith to Docker Distributed Applications
From Monolith to Docker Distributed Applications
Carlos Sanchez
 
Containerization Is More than the New Virtualization
Containerization Is More than the New VirtualizationContainerization Is More than the New Virtualization
Containerization Is More than the New Virtualization
C4Media
 
Docker - The Linux Container
Docker - The Linux ContainerDocker - The Linux Container
Docker - The Linux Container
Balaji Rajan
 
Docker storage designing a platform for persistent data
Docker storage designing a platform for persistent dataDocker storage designing a platform for persistent data
Docker storage designing a platform for persistent data
Docker, Inc.
 
DockerCon 18 docker storage
DockerCon 18 docker storageDockerCon 18 docker storage
DockerCon 18 docker storage
Daniel Finneran
 
Novices guide to docker
Novices guide to dockerNovices guide to docker
Novices guide to docker
Alec Clews
 
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
Carlos Sanchez
 
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemDocker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Van Phuc
 
Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant
Ricardo Amaro
 
Docker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in Production
Docker, Inc.
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons Learned
DataStax Academy
 
ABCs of docker
ABCs of dockerABCs of docker
ABCs of docker
Sabyrzhan Tynybayev
 
Docker, but what it is?
Docker, but what it is?Docker, but what it is?
Docker, but what it is?
Julien Maitrehenry
 

Similar to DockerCon EU 2015: Persistent, stateful services with docker cluster, namespaces and docker volume magic. (20)

Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
Using Docker with OpenStack - Hands On!
 Using Docker with OpenStack - Hands On! Using Docker with OpenStack - Hands On!
Using Docker with OpenStack - Hands On!
 
Drupalcamp es 2013 drupal with lxc docker and vagrant
Drupalcamp es 2013  drupal with lxc docker and vagrant Drupalcamp es 2013  drupal with lxc docker and vagrant
Drupalcamp es 2013 drupal with lxc docker and vagrant
 
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
 
Hands on introduction to docker security for docker newbies
Hands on introduction to docker security for docker newbiesHands on introduction to docker security for docker newbies
Hands on introduction to docker security for docker newbies
 
Docker
DockerDocker
Docker
 
From Monolith to Docker Distributed Applications
From Monolith to Docker Distributed ApplicationsFrom Monolith to Docker Distributed Applications
From Monolith to Docker Distributed Applications
 
Containerization Is More than the New Virtualization
Containerization Is More than the New VirtualizationContainerization Is More than the New Virtualization
Containerization Is More than the New Virtualization
 
Docker - The Linux Container
Docker - The Linux ContainerDocker - The Linux Container
Docker - The Linux Container
 
Docker storage designing a platform for persistent data
Docker storage designing a platform for persistent dataDocker storage designing a platform for persistent data
Docker storage designing a platform for persistent data
 
DockerCon 18 docker storage
DockerCon 18 docker storageDockerCon 18 docker storage
DockerCon 18 docker storage
 
Novices guide to docker
Novices guide to dockerNovices guide to docker
Novices guide to docker
 
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos
 
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemDocker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
 
Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant
 
Docker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in Production
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons Learned
 
ABCs of docker
ABCs of dockerABCs of docker
ABCs of docker
 
Docker, but what it is?
Docker, but what it is?Docker, but what it is?
Docker, but what it is?
 

More from Docker, Inc.

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
Docker, Inc.
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
Docker, Inc.
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
Docker, Inc.
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
Docker, Inc.
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
Docker, Inc.
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Docker, Inc.
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
Docker, Inc.
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
Docker, Inc.
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
Docker, Inc.
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
Docker, Inc.
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
Docker, Inc.
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
Docker, Inc.
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
Docker, Inc.
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
Docker, Inc.
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Docker, Inc.
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
Docker, Inc.
 

More from Docker, Inc. (20)

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
 

Recently uploaded

UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 

DockerCon EU 2015: Persistent, stateful services with docker cluster, namespaces and docker volume magic.

  • 1. Persistent, stateful services with docker clusters, namespaces and docker volume magic Michael Neale Co-founder, CloudBees (that Jenkins company)
  • 2. Agenda Supercontainers and storage Privileges It’s all files (part 2) Controlling the host and peer containers Storage engines Stateful docker clusters “off the shelf” cluster scheduling The solution chosen Other tools out there Credits… Background Use-case for stateful services Docker volumes Quick namespaces revision nsenter Mounts and Volumes It’s all files (part 1) the mount namespace creating bind mounts docker volume api (use it!)
  • 3. Background The Need for Stateful Services
  • 4. Basis of this presentation: .. was learned while building an elastic and scalable Jenkins based product for multiple cloud environments, on docker
  • 5. —Michael Neale “No containers were hurt as part of this production.” 5
  • 6. My history with docker 6 Ex Red Hat where I heard about “control groups” Starting CloudBees, looking at ways to fairly multi tenant Later would discover (and with much help) use LXC Saw a video of Solomon demoing docker and didn’t believe it Still didn’t believe it For the longest time didn’t believe it
  • 7. CloudBees & Docker 7 Actually spoke about this at DockerCon 2014 (the first one!) cgroups -> LXC -> LXC + ZFS copy-on-write Like dotCloud - ran a PaaS (as well as CI/CD toolchain) In 2014 moved to focus on CI/CD (dotCloud focussed on docker) In 2014 moved to adopt docker over LXC (and ZFS) Using: Docker Hub (private repos), Private Registry Many of our customers are commercial users of docker Docker Jenkins plugins: docker hub, build and publish and many more
  • 8. 8 Put all the things (OSS and commercial) on docker hub
  • 9. 9 I started the “official” jenkins image early on updated now ~weekly (with LTS images also)
  • 11. A stateless cluster of apps is the dream 11 But the reality is, many apps still need state, a disk Databases for example Hands up who would run Oracle on NFS?
  • 12. Reality: local disk Network filesystems are great* But sometimes you need the data close to the processing EBS, HDFS, GCP, OpenStack block storage… BUT: how to balance this need for local state with “ephemeral” servers Servers come and go, need to restore the data (fast) Need to backup the data (delta/snapshots - fast) Alternatives: SANs (reattach volumes to replacement nodes, some clouds also support this) Reason for backups: resilience. Volumes can disappear too.
  • 13. Current product 13 Years of experience with containers EC2, ZFS, EBS, LXC learn from it to build something new and “turn key” installable, powered by docker I accidentally created a cluster scheduler (it happens.. please don’t) An evolved “pre-docker” system
  • 14. Aim: a new product 14 A distributed Jenkins cluster 10000s of “masters”, 100000s of elastic build workers Utilise “Off The Shelf” expertise based around docker: Mesos, Docker Swarm, Kubernetes Work within existing constraints of a lively and evolving open source project (this means accepting local disk state… for now)
  • 15. Additional Constraints Only want to depend on docker being present on “worker nodes” Off the shelf cluster scheduler Use local disk* Multiple target clouds to be supported Multiple storage “engines” to be supported * Would love to refactor to DB backed
  • 16. “Storage engines?” “The thing that backs up and restores local disks” eg: EBS (snapshots), rsync, NFS, ZFS send … Same cluster management, same api, different storage tech for different clouds/needs. Ensures volumes are backed up in a consistent state (using LVM snapshot, xfs_freeze, as needed)
  • 17. Docker volumes 17 Docker helpfully lets you bind mount to host Giving you a choice of ways to get data to the host Containers can remain ephemeral However, you need to manage those underlying volumes Note: you shouldn’t need to do what I did. Use something off the shelf if you can. If you must, there is an excellent docker plugin api and volume plugin api.
  • 18. Solving local disk with docker client cluster sched. docker host storage r u n n request app find free slot ask for data provide data Container fully running with data
  • 19. Using “trickery” client cluster sched. docker host storage r u n n request app find free slot request data provide data, bind mount container starts, asks for dynamic bind mount, waits
  • 20. With docker volume plugin api client cluster sched. docker host storage r u n n request app find free slot json provide data docker calls volume plugin BEFORE container starts, launches with bind mount
  • 21. However: Docker plugin api did not exist yet! 21 I had to make do with “trickery” Other choices like powerstrip existed, but wanted “standard” docker And you are here for namespace trickery So lets learn from it…
  • 22. —Unknown “Hard work pays off eventually, but laziness pays off right now.” 22
  • 23. Namespaces - really quick… 23 Along with cgroups are “foundational tech” for containers 6 types: Mount, UTS, IPC, PID, Network and User My favourites: Mount: filesystem stuff (that I used) PID, Network and the exciting User namespaces! https://lwn.net/Articles/531114/
  • 24. How do we access these namespaces? 24 nsenter - command line tool nsenter allows you to “enter” a namespace and do something in the context of it Available out of the box in many linux distros now https://github.com/karelzak/util-linux/blob/master/sys-utils/nsenter.c https://blog.docker.com/tag/nsenter/
  • 25. Mounts and Volumes It’s all files in Linux - part 1
  • 26. Mount namespace 26 Containers don’t see all mount points, all devices, just their own Allows dockers “bind mount” to work A “bind mount” in linux is really an “alternative view of an existing directory tree” A docker bind mount takes that “alternative view” and makes it visible to the container (via its mount name space) Magic? No. Linux.
  • 27. It’s all files, part 1 27 Start any container Access docker host and run this to get the pid of the whole container: docker inspect --format {{.State.Pid}} <container id> You can then see the 6 namespaces in /proc/<PID>/ns: ls /proc/7865/ns/ ipc mnt net pid user uts
  • 28. /proc virtual filesystem and nsenter 28 /proc is a virtual filesystem (http://www.tldp.org/LDP/Linux- Filesystem-Hierarchy/html/proc.html) Run a command inside a given containers namespace: nsenter --mount=/proc/$PID/ns/mnt -- /usr/bin/command param RUN A COMMAND FROM HOST AS IF YOU ARE IN THAT CONTAINER
  • 29. —SpidermansUncle “With great nsenter power, comes great responsibility ” 29
  • 30. Creating a bind mount on a running container 30 ( -v /var/foo:/var/bar ) High level steps: Get the underlying device from the host, into the container mount the device in the container bind mount in the container to the “directory you want” unmount the device in container remove the initial mount What you are left with: a bind mount to the volume on the host you wanted in the first place, and only that path. Not the whole device/volume on host.
  • 31. You don’t need to do all this yourself, ever! 31
  • 32. 32 # Using a device’s numbers we can create the same device in container # use nsenter to create a device file IN the container (using its $PID): nsenter --mount=/proc/$PID/ns/mnt -- mknod --mode 0600 /dev/sda1 b 8 0 # Now we have the device ALSO in the container! # We can mount it (normal linux) # bind mount to the desired directory (also normal linux)! # all from the host
  • 33. I told you not to panic! 33
  • 34. Now we have a dynamic bind mount 34 As if we used -v /var/foo:/var/bar on startup Remember: DON’T DO THIS! Really: you shouldn’t need to do this yourself. Use the docker plugin volume api! (if you must)
  • 35. Docker plugin API 35 Out of process JSON based api (but running on same host) plugins are installed by putting a file in a directory, and referred by name (minutes the extension) Well defined JSON protocol https://docs.docker.com/extend/plugin_api/
  • 36. Docker volume plugin API 36 docker run -v volumename:/data --volume-driver=mydriver .. “volumename” is passed to the registered volume-driver (which is listening on http) volume-driver then prepares the data somewhere on the host, returns where it lives (via json)… docker then bind mounts it in as /data All happens BEFORE container starts https://docs.docker.com/extend/plugins_volume/
  • 37. Docker volume plugin API 37 Would not require messing with namespaces Still allow an out of process “volume service” to take care of messy volume details However - DOES require you to register the plugin with docker on the host And less terrifying fun than nsenter and namespaces
  • 38. If you really must 38 https://github.com/michaelneale/bind-mount-supercontainer Sample python code that I prototyped this with. Use with care!
  • 39. Supercontainers and storage engines Like containers, only more… uh super…
  • 40. Supercontainers - concept 40 Term came from Red Hat http://developerblog.redhat.com/2014/11/06/introducing-a-super- privileged-container-concept/ You have heard of privileged containers? docker run --privileged .. Drops all namespace restrictions “Super privileged containers” add in more access to the underlying host…
  • 41. It’s all files (part 2) 41 Add in the host root filesystem, docker daemon, and all the rest: docker run -v /var/run/docker.sock:/var/run/docker.sock —privileged -v /:/media/host my-super-container Brings in docker socket, and root as /media/host /media/host then contains ALL devices, virtual files, /proc etc
  • 42. It’s all files (part 2) 42 Why? We can do everything we did with nsenter before but from WITHIN a “peer container”
  • 43. 43
  • 44. It’s all files (part 2) 44 We can do everything we did with nsenter before but from WITHIN a “peer container” Remember requirements: vanilla docker, only docker installed on host Use super-container as a “agent” container, do all the automation you could want No need for extra bits on the host box Allows using “off the shelf” cluster scheduling (only docker need be installed)
  • 45. Controlling the host 45 Host can be accessed from super-container via nsenter PID of host is 1! eg, from super-container, get all mounts: nsenter --mount=/media/host/proc/1/ns/mnt -- cat /proc/mounts Run a command, from container, on the host (stuff after “--") /media/host lets us get to the host. Even devices.
  • 46. Controlling the host 46 Host can be accessed from super-container via nsenter Do all the steps as before, but with “nsenter — mount=/media/host/proc/1/ns/mnt” prefixed
  • 47. Controlling peer containers from supercontainer 47 Peers are other “ordinary” containers on the same host as the super container Peers can be accessed from super-container also via nsenter Just like before, we use nsenter, with the peer containers $PID But prefix it with the hosts filesystem: nsenter --mount=/proc/$PID/ns/mnt -- .. becomes: nsenter --mount=/media/host/proc/$PID/ns/mnt -- ..
  • 48. Controlling peer containers 48 Why? Once again, use he super-container as the controlling agent on a host Less bits to install on the host
  • 49. Storage engines 49 My requirement: multiple implementations for different clouds Different clouds have different storage engines Super container great place to host volume service Different implementations on service depending on what is on offer EBS, NFS, openstack rsync and more This “volume service super-container” is responsible for backup/restore
  • 50. Storage engines - eg an AWS region 50 zone-1 zone-2 serverA serverBserverA serverB vol-1 vol-2 vol-1vol-1 vol-1vol-2 snapshots request backup
  • 51. Snapshots/backups 51 Snapshots a cheap and quick Zone resilience Volumes (ie: disks) are not as durable as snapshots/backups Similar in other platforms: GCP, OpenStack, Azure. Google compute persistent disks: does allow volumes read-only extra mounts across instances for redundancy of compute nodes In our case: failing over is “restoring from backup” - always test your backups!
  • 52. Supercontainers - summary 52 A useful tool for low level control No need to install bits on the host Can control peers directly Could be a great place to host a docker volume plugin implementation (not currently recommended in Docker plugin api docs)
  • 53. Stateful clusters Everyone wants to be stateless…
  • 54. What we built… .. an elastic and scalable Jenkins based product for multiple cloud environments, on docker
  • 55. Cluster schedulers/managers 55 Remember: I have build schedulers before, would rather not again Docker Swarm, Mesos/Marathon, Kubernetes etc Some have concepts of volumes All can schedule “plain” docker containers Super containers can give you a way to get lower level access
  • 56. What we settled on 56 Super containers to implement volume service Support for multiple storage engines for different clouds Scheduled via mesos+marathon Only docker (+ mesos in this case) required on the hosts Why mesos: practical choice for us but not a tight coupling (could mesos be in a super container? probably) Using containers for all the things: elastic search nodes, builds, even haproxy For us, 5 minute or event based backups/snapshots are fine
  • 57. Running supercontainers 57 Eg. marathon: schedule a super container to run on each host Constraint on volume service: one per host, size: number of servers in cluster (3 in this case): vol service vol servicevol service master master elastic search haproxy (free)
  • 58. Working with EBS (an example) client container volume service EBS api requests backup freeze for snapshot initiate snapshot unfreeze backup delta, copy to s3 optimisation: use LVM snapshot instead of freeze
  • 59. Backups, backups 59 Servers are ephemeral Servers come and go Disks are fallible (even if cloud platforms call them “volumes”) Workload moves around Restore data when workload is moved to a new location Delta backups are used to avoid full copies each time
  • 60. Cluster schedulers/managers 60 Storage awareness is being built in increasingly (Kubernetes volumes, mesos storage awareness) Ideal world: your cluster manager will do all this for you. If you live in that world: congrats. Make yourself a cocktail:
  • 61. My recipe for no-sugar old fashioned: https://gist.github.com/michaelneale/60341 45 61
  • 62. “off the shelf” stateful volume tools 62 Rexray: use volume plugin api for Amazon EBS, Rackspace and more Flocker from ClusterHQ Kubernetes volume support Apache “Mysos”: MySQL service backed up to HDFS on mesos Tutum from Docker! has support for persistent volumes Watch this space… (changing constantly) https://docs.clusterhq.com/en/1.4.0/labs/docker-plugin.html https://github.com/emccode/rexray
  • 63. Stateful volumes summary 63 It is possible with docker Avoid doing it yourself is someone else already has Using local filesystem directly does feel a bit like “legacy” But it is a reality for some apps (especially database services) Lovely to port everything to be stateless, database backed, blobstore backed, but it takes time Lean on the capabilities of the underlying platform where you can
  • 64. Credits 64 Jérôme Petazzoni (@jpetazzo) - years of inspirational blog posts, hacks on linux/docker/volumes. And great hair. http://jpetazzo.github.io/2015/01/13/docker-mount-dynamic-volumes/ - BTW Jerome - it works for real! Red Hat for Super Container concepts: Daniel Walsh: http://developerblog.redhat.com/2014/11/06/introducing-a-super-privileged- container-concept/ Trevor Jay from Red Hat for some final namespace tips https://securityblog.redhat.com/author/tjay/ I really just mashed up the above concepts: https://michaelneale.blogspot.com.au/2015/02/mounting-devices-host- from-super.html
  • 65. @jpetazzo’s hair - imminent singularity? 0 45 90 135 180 225 2012 2013 2014 2015 Region 1 65

Editor's Notes

  1. picture credit: https://www.flickr.com/photos/jezarnold/140044286/in/photolist-dnLhE-iYB5-7b7Ptj-thuEnn-oYd5Y9-oYd5FK-fT3vJw-fch9m7-LkKpy-nixaHL-9g58Ru-hQy1pm-c1VGtw-7b41x8-7AhP2e-8WsL5s-nfQ7Mg-saMMdi-rdMGzE-rTdEAY-nxm7yb-ajRqBR-nfQn5L-aLrQZg-7NHnp-mz6Ps1-mz5vPt-mz58h4-axko2Q-FRvA1-8crA64-7b7QFq-x9jRV-3JMPi-bjVGVw-99ryV-81WKxZ-4CUdYW-7b7Rd5-fc2KLD-7Sf5oK-mz79bJ-46gqkN-6SGv-mz4GEi-5XbcqR-3JMPg-srBsH-y2CZX-rtkGUb
  2. picture credit: https://www.flickr.com/photos/jezarnold/140044286/in/photolist-dnLhE-iYB5-7b7Ptj-thuEnn-oYd5Y9-oYd5FK-fT3vJw-fch9m7-LkKpy-nixaHL-9g58Ru-hQy1pm-c1VGtw-7b41x8-7AhP2e-8WsL5s-nfQ7Mg-saMMdi-rdMGzE-rTdEAY-nxm7yb-ajRqBR-nfQn5L-aLrQZg-7NHnp-mz6Ps1-mz5vPt-mz58h4-axko2Q-FRvA1-8crA64-7b7QFq-x9jRV-3JMPi-bjVGVw-99ryV-81WKxZ-4CUdYW-7b7Rd5-fc2KLD-7Sf5oK-mz79bJ-46gqkN-6SGv-mz4GEi-5XbcqR-3JMPg-srBsH-y2CZX-rtkGUb
  3. The official images have a “app store” like approval process, but get good usage! The docker stamp of approval
  4. picture credit: https://www.flickr.com/photos/jezarnold/140044286/in/photolist-dnLhE-iYB5-7b7Ptj-thuEnn-oYd5Y9-oYd5FK-fT3vJw-fch9m7-LkKpy-nixaHL-9g58Ru-hQy1pm-c1VGtw-7b41x8-7AhP2e-8WsL5s-nfQ7Mg-saMMdi-rdMGzE-rTdEAY-nxm7yb-ajRqBR-nfQn5L-aLrQZg-7NHnp-mz6Ps1-mz5vPt-mz58h4-axko2Q-FRvA1-8crA64-7b7QFq-x9jRV-3JMPi-bjVGVw-99ryV-81WKxZ-4CUdYW-7b7Rd5-fc2KLD-7Sf5oK-mz79bJ-46gqkN-6SGv-mz4GEi-5XbcqR-3JMPg-srBsH-y2CZX-rtkGUb
  5. picture credit: https://www.flickr.com/photos/jezarnold/140044286/in/photolist-dnLhE-iYB5-7b7Ptj-thuEnn-oYd5Y9-oYd5FK-fT3vJw-fch9m7-LkKpy-nixaHL-9g58Ru-hQy1pm-c1VGtw-7b41x8-7AhP2e-8WsL5s-nfQ7Mg-saMMdi-rdMGzE-rTdEAY-nxm7yb-ajRqBR-nfQn5L-aLrQZg-7NHnp-mz6Ps1-mz5vPt-mz58h4-axko2Q-FRvA1-8crA64-7b7QFq-x9jRV-3JMPi-bjVGVw-99ryV-81WKxZ-4CUdYW-7b7Rd5-fc2KLD-7Sf5oK-mz79bJ-46gqkN-6SGv-mz4GEi-5XbcqR-3JMPg-srBsH-y2CZX-rtkGUb
  6. Device numbers are kernel internal representation of the device file - the real thing
  7. AWS zones are independent data centers (actually more than just one DC per zone). Snapshots live in s3, across zones. You can migrate between zones by creating a new volume from a snapshot in the required zone. Keeping fresh snapshots allows you to move on failure easily. Cost of snapshots is small, as only a delta is taken.