Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
EC2 Storage for DockerPersistent Containers the Right Way with Container Data Volumes
EMC {code} - @clintonskitson - emccode.github.io 1
What the heck is persistence?
$$$
EMC {code} - @clintonskitson - emccode.github.io 2
EMC {code} - @clintonskitson - emccode.github.io 3
Is anyone using containers
for persistence today?
EMC {code} - @clintonskitson - emccode.github.io 4
EMC {code} - @clintonskitson - emccode.github.io 5
Where's the beef? How's it
done today?
EMC {code} - @clintonskitson - emccode.github.io 6
EMC {code} - @clintonskitson - emccode.github.io 7
Composability
The Container Eco-System
.. A Container Data Volume
EMC {code} - @clintonskitson - emccode.github.io 8
A Heterogeneous Stack and Granular Services
4 Multiple storage platforms, container runtimes,
container OSs, container management platforms
4 Fast Bytes
4 Data Services
4 Data Mobility
4 Availability
EMC {code} - @clintonskitson - emccode.github.io 9
Want to use EBS volumes
with container
granularity?
EMC {code} - @clintonskitson - emccode.github.io 10
How are Docker Images, Graph, and Volume drivers related?
--storage-driver= and --volume-driver=
EMC {code} - @clintonskitson - emccode.github.io 11
EMC {code} - @clintonskitson - emccode.github.io 12
First, Big Thanks to the Devs!
4 David Calavera @calavera
4 Brian Goff @cpuguy83
4 Arnaud Porterie @icecrime
4 Luke Marsden @lukemarsden
4 Michael Crosby @crosbymichael
4 Alexander Morozov @LK4D4math
EMC {code} - @clintonskitson - emccode.github.io 13
4 Jessie Frazelle @frazelledazzell
4 Tibor Vass @tiborvass
4 Jeff Lindsay @progrium
EMC {code} - @clintonskitson - emccode.github.io 14
EXPERIMENTAL (Docker 1.7)
4 Volume Enhancements #13161
4 Refactor Volume Interface
4 Prepare for Volumes as 1st class citizens
4 Create a plugin client in Docker to request storage
from a Volume Manager API
EMC {code} - @clintonskitson - emccode.github.io 15
EMC {code} - @clintonskitson - emccode.github.io 16
Volume Manager
4 Simple
4 Plumbing of Storage control plane
4 Advanced
4 Abstraction for storage, os, container runtimes
4 Guest storage introspection
4 Inter/intra-storage platform operations
EMC {code} - @clintonskitson - emccode.github.io 17
REX-Ray
github.com/emccode/
rexray
Flocker
github.com/clusterhq/
flocker
EMC {code} - @clintonskitson - emccode.github.io 18
Volume Mananger in the stack
Block is more difficult than NAS (NFS,CIFS)
- NAS is globally advertised to a host or set of hosts
- Block is targeted towards a host
- Block can be surfaced as virtual hardware (below),
and networked devices (aside)
- Block and NAS can be managed for containers in
similar ways with the right abstractions
EMC {code} - @clintonskitson - emccode.github.io 19
How does REX-Ray work?
EMC {code} - @clintonskitson - emccode.github.io 20
EMC {code} - @clintonskitson - emccode.github.io 21
1) OS Driver for Linux
EMC {code} - @clintonskitson - emccode.github.io 22
Linux serves as an OS that receives storage volumes as
devices and must present these appropriately as
mounts.
OS capabilities
- Get mounts
- Mount/Unmount
- Format
EMC {code} - @clintonskitson - emccode.github.io 23
2) Storage Driver for EC2
(EBS)
EMC {code} - @clintonskitson - emccode.github.io 24
EBS volumes serve as the storage platform underneath
the VMs, creating volumes and attaching SCSI devices
on demand.
Storage capabilities
- Create/Remove Volumes
- Create Volumes from Scratch/Snapshot/Other Volume
- Attach/Detach Volumes
- Create/Remove Snapshot
- Copy Snapshot between regions
EMC {code} - @clintonskitson - emccode.github.io 25
Introspection
- rexray get-instance = Who am I?
- rexray attach-volume = Attach to me.
Storage Options
- --iops = supported IOPS
- --volumetype = General Purpose SSD (gp2),
Provisioned IOPS (io1), Magentic (standard)
- --size = size in GB
- --availabilityzone = target AZ
EMC {code} - @clintonskitson - emccode.github.io 26
Basic Storage Workflow
- rexray new-volume --size=100 --volumetype=io1 --
iops=1000 (storage adapter)
- rexray attach-volume --volumeid=vol-ssss (storage
adapter - introspection)
- rexray format-device --devicename=/dev/xvd_ --
fstype=ext4 (os adapter)
- rexray mount-device --devicename=/dev/xvd_ --
mountpoint=/mnt/test (os adapter)
EMC {code} - @clintonskitson - emccode.github.io 27
3) Volume Manager Driver
for Docker
EMC {code} - @clintonskitson - emccode.github.io 28
The Volume Manager combines both storage and os
drivers to simplify management for container runtimes
and others. Managing block storage management is
simplified and aligns to NAS.
Volume Manager Capabilities
- Create/Remove
- Mount/Unmount
- Path
EMC {code} - @clintonskitson - emccode.github.io 29
What Changes
4 Old way
4 Advertise block/NFS storage to instance
4 Create FS (block)
4 Mount device to mount point /mnt/vol1
4 docker run -ti -v /mnt/vol1:/vol1 busybox
4 ..then undo it all
EMC {code} - @clintonskitson - emccode.github.io 30
Hybrid of Storage/OS/Volume Workflow
- rexray new-volume --volumename=testing10 --size=1
- rexray mount-volume --volumename=testing10
EMC {code} - @clintonskitson - emccode.github.io 31
Advanced Storage Workflow - Copy Volume between AZ
- rexray new-volume --volumename=testing20 --size=1
(host1)
- rexray mount-volume --volumeid=vol-sss (host1)
- touch /var/lib/docker/volumes/testing20/test
- rexray get-volumemap (host2)
- rexray get-volume --volumeid=vol-sss (host2)
- rexray new-volume --volumename=testing20b --
volumeid=vol-sss --availabilityzone=blah
EMC {code} - @clintonskitson - emccode.github.io 32
4) Docker Volume Driver
EMC {code} - @clintonskitson - emccode.github.io 33
How does it work?
- docker create - Create Volume
- docker start - Mount Volume
- docker stop - Unmount Volume
- docker rm -v - Remove Container and Volume
- docker run - Create, Mount, Unmount Volume
- docker run --rm - Create, Mount, Remove Volume
EMC {code} - @clintonskitson - emccode.github.io 34
4 Commands get passed via VolumeDriverProxy
4 /usr/share/docker/plugins/rexray.spec (Unix Socket
or TCP)
4 unix:///usr/share/docker/plugins/rexray.sock
4 tcp://127.0.0.1:8080
4 Currently only passes name of volume
4 Different instances can represent different profiles
in the short term..
EMC {code} - @clintonskitson - emccode.github.io 35
4 echo -e "GET /Plugin.Activate HTTP/1.1rn" | socat
unix-connect:/usr/share/docker/plugins/rexray.sock
STDIO
4 /usr/src/go/bin/curl-unix-socket -v -X POST -d
'{"Name":"test22"}rn' unix:///usr/share/docker/
plugins/rexray.sock:/VolumeDriver.Create
4 /usr/src/go/bin/curl-unix-socket -v -X POST -d
'{"Name":"test22"}rn' unix:///usr/share/docker/
plugins/rexray.sock:/VolumeDriver.Mount
EMC {code} - @clintonskitson - emccode.github.io 36
4 New Docker way with Volume Drivers
4 docker run -ti --volume-driver=rexray -v
volumeName:/externalVol busybox
4 docker run -ti --volume-driver=rexray -v
volumeName2:/externalVol2 busybox
EMC {code} - @clintonskitson - emccode.github.io 37
Host Mobility
- (host1) docker run -ti --volume-driver=rexray -v
testing100:/testing100 busybox
touch /testing100/test
exit
- (host2) docker run -ti --volume-driver=rexray -v
testing100:/testing100 busybox
ls /testing100/test
EMC {code} - @clintonskitson - emccode.github.io 38
4 What does this enable?
4 Run important things with data in containers
4 Composability of Volume features
4 Storage platform services are directly available to
containers
4 Volumes can be easily moved between container
hosts
EMC {code} - @clintonskitson - emccode.github.io 39
4 Container images remain non-persistent, while the
container data volumes are persistent
4 Container OSs remain immutable
EMC {code} - @clintonskitson - emccode.github.io 40
4 How do you customize volumes in this experimental
mode? != ideal
4 Integrate against storage platform separately
4 Create them ahead of time
4 Dedicate Unix sockets to storage profiles (size, io,
type, az)
EMC {code} - @clintonskitson - emccode.github.io 41
Future
- SSL and Authentication tokens
- Storage profiles and settings
- Volumes as 1st class citizens
- Storage services
- Volume updates
- Asynchronous calls
- Distributed volume manager
- Direct to storage platforms (Docker -> EC2?)
EMC {code} - @clintonskitson - emccode.github.io 42
Thank You
EMC {code} - @clintonskitson - emccode.github.io 43
4 go get github.com/Soulou/curl-unix-socket
4 docker run --rm -it -v $GOPATH:/go -w /go/src/
github.com/emccode/rexraycli golang:1.4.2-cross
make release
4 docker run --rm -ti -e
DOCKER_EXPERIMENTAL=true --privileged -v ~/
go/src/github.com/docker/docker:/go/src/
github.com/docker/docker dockercore/docker hack/
make.sh binary
EMC {code} - @clintonskitson - emccode.github.io 44

More Related Content

What's hot

Docker Athens: Docker Engine Evolution & Containerd Use Cases
Docker Athens: Docker Engine Evolution & Containerd Use CasesDocker Athens: Docker Engine Evolution & Containerd Use Cases
Docker Athens: Docker Engine Evolution & Containerd Use Cases
Phil Estes
 
CRI Runtimes Deep-Dive: Who's Running My Pod!?
CRI Runtimes Deep-Dive: Who's Running My Pod!?CRI Runtimes Deep-Dive: Who's Running My Pod!?
CRI Runtimes Deep-Dive: Who's Running My Pod!?
Phil Estes
 
Delivering Go.CD with Terraform and Docker
Delivering Go.CD with Terraform and DockerDelivering Go.CD with Terraform and Docker
Delivering Go.CD with Terraform and Docker
Jorrit Salverda
 
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
謝 宗穎
 
CoreOS + Kubernetes @ All Things Open 2015
CoreOS + Kubernetes @ All Things Open 2015CoreOS + Kubernetes @ All Things Open 2015
CoreOS + Kubernetes @ All Things Open 2015
Brandon Philips
 
It's 2018. Are My Containers Secure Yet!?
It's 2018. Are My Containers Secure Yet!?It's 2018. Are My Containers Secure Yet!?
It's 2018. Are My Containers Secure Yet!?
Phil Estes
 
Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)
HungWei Chiu
 
Kube-AWS
Kube-AWSKube-AWS
Kube-AWS
CoreOS
 
Docker All The Things - ASP.NET 4.x and Windows Server Containers
Docker All The Things - ASP.NET 4.x and Windows Server ContainersDocker All The Things - ASP.NET 4.x and Windows Server Containers
Docker All The Things - ASP.NET 4.x and Windows Server Containers
Anthony Chu
 
Docker Summit 2016 - Kubernetes: Sweets and Bitters
Docker Summit 2016 - Kubernetes: Sweets and BittersDocker Summit 2016 - Kubernetes: Sweets and Bitters
Docker Summit 2016 - Kubernetes: Sweets and Bitters
smalltown
 
Docker 初探,實驗室中的運貨鯨
Docker 初探,實驗室中的運貨鯨Docker 初探,實驗室中的運貨鯨
Docker 初探,實驗室中的運貨鯨
Ruoshi Ling
 
Docker n co
Docker n coDocker n co
Docker n co
Rohit Jnagal
 
Docker^3
Docker^3Docker^3
How to easy deploy app into any cloud
How to easy deploy app into any cloudHow to easy deploy app into any cloud
How to easy deploy app into any cloud
Ladislav Prskavec
 
KubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeCon EU 2016: Using Traffic Control to Test Apps in KubernetesKubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeAcademy
 
Using docker to develop NAS applications
Using docker to develop NAS applicationsUsing docker to develop NAS applications
Using docker to develop NAS applications
Terry Chen
 
TIAD 2016 : Application delivery in a container world
TIAD 2016 : Application delivery in a container worldTIAD 2016 : Application delivery in a container world
TIAD 2016 : Application delivery in a container world
The Incredible Automation Day
 
What Have Syscalls Done for you Lately?
What Have Syscalls Done for you Lately?What Have Syscalls Done for you Lately?
What Have Syscalls Done for you Lately?
Docker, Inc.
 
Ansible docker
Ansible dockerAnsible docker
Ansible docker
QNIB Solutions
 
CoreOS @ summer meetup in Utrecht
CoreOS @ summer meetup in UtrechtCoreOS @ summer meetup in Utrecht
CoreOS @ summer meetup in Utrecht
Timo Derstappen
 

What's hot (20)

Docker Athens: Docker Engine Evolution & Containerd Use Cases
Docker Athens: Docker Engine Evolution & Containerd Use CasesDocker Athens: Docker Engine Evolution & Containerd Use Cases
Docker Athens: Docker Engine Evolution & Containerd Use Cases
 
CRI Runtimes Deep-Dive: Who's Running My Pod!?
CRI Runtimes Deep-Dive: Who's Running My Pod!?CRI Runtimes Deep-Dive: Who's Running My Pod!?
CRI Runtimes Deep-Dive: Who's Running My Pod!?
 
Delivering Go.CD with Terraform and Docker
Delivering Go.CD with Terraform and DockerDelivering Go.CD with Terraform and Docker
Delivering Go.CD with Terraform and Docker
 
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境
 
CoreOS + Kubernetes @ All Things Open 2015
CoreOS + Kubernetes @ All Things Open 2015CoreOS + Kubernetes @ All Things Open 2015
CoreOS + Kubernetes @ All Things Open 2015
 
It's 2018. Are My Containers Secure Yet!?
It's 2018. Are My Containers Secure Yet!?It's 2018. Are My Containers Secure Yet!?
It's 2018. Are My Containers Secure Yet!?
 
Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)
 
Kube-AWS
Kube-AWSKube-AWS
Kube-AWS
 
Docker All The Things - ASP.NET 4.x and Windows Server Containers
Docker All The Things - ASP.NET 4.x and Windows Server ContainersDocker All The Things - ASP.NET 4.x and Windows Server Containers
Docker All The Things - ASP.NET 4.x and Windows Server Containers
 
Docker Summit 2016 - Kubernetes: Sweets and Bitters
Docker Summit 2016 - Kubernetes: Sweets and BittersDocker Summit 2016 - Kubernetes: Sweets and Bitters
Docker Summit 2016 - Kubernetes: Sweets and Bitters
 
Docker 初探,實驗室中的運貨鯨
Docker 初探,實驗室中的運貨鯨Docker 初探,實驗室中的運貨鯨
Docker 初探,實驗室中的運貨鯨
 
Docker n co
Docker n coDocker n co
Docker n co
 
Docker^3
Docker^3Docker^3
Docker^3
 
How to easy deploy app into any cloud
How to easy deploy app into any cloudHow to easy deploy app into any cloud
How to easy deploy app into any cloud
 
KubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeCon EU 2016: Using Traffic Control to Test Apps in KubernetesKubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
 
Using docker to develop NAS applications
Using docker to develop NAS applicationsUsing docker to develop NAS applications
Using docker to develop NAS applications
 
TIAD 2016 : Application delivery in a container world
TIAD 2016 : Application delivery in a container worldTIAD 2016 : Application delivery in a container world
TIAD 2016 : Application delivery in a container world
 
What Have Syscalls Done for you Lately?
What Have Syscalls Done for you Lately?What Have Syscalls Done for you Lately?
What Have Syscalls Done for you Lately?
 
Ansible docker
Ansible dockerAnsible docker
Ansible docker
 
CoreOS @ summer meetup in Utrecht
CoreOS @ summer meetup in UtrechtCoreOS @ summer meetup in Utrecht
CoreOS @ summer meetup in Utrecht
 

Similar to EC2 Storage for Docker 150526b

Architecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsArchitecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based Deployments
Ben Hall
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
Robert Lemke
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
Roman Rodomansky
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
Ben Hall
 
Introduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group CologneIntroduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group Cologne
D
 
VMware@Night Container and Virtualization
VMware@Night Container and VirtualizationVMware@Night Container and Virtualization
VMware@Night Container and Virtualization
Opvizor, Inc.
 
VMware@Night: Container & Virtualisierung
VMware@Night: Container & VirtualisierungVMware@Night: Container & Virtualisierung
VMware@Night: Container & Virtualisierung
Digicomp Academy AG
 
BDM32: AdamCloud Project - Part II
BDM32: AdamCloud Project - Part IIBDM32: AdamCloud Project - Part II
BDM32: AdamCloud Project - Part II
David Lauzon
 
When Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architectureWhen Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architecture
Adrien Blind
 
Observability
ObservabilityObservability
Observability
Diego Pacheco
 
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Zabbix
 
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Thomas Fricke
 
kubernetes for beginners
kubernetes for beginnerskubernetes for beginners
kubernetes for beginners
Dominique Dumont
 
Running .NET on Docker
Running .NET on DockerRunning .NET on Docker
Running .NET on Docker
Ben Hall
 
Docker San Francisco Meetup April 2015 - The Docker Orchestration Ecosystem o...
Docker San Francisco Meetup April 2015 - The Docker Orchestration Ecosystem o...Docker San Francisco Meetup April 2015 - The Docker Orchestration Ecosystem o...
Docker San Francisco Meetup April 2015 - The Docker Orchestration Ecosystem o...
Patrick Chanezon
 
手把手帶你學Docker 03042017
手把手帶你學Docker 03042017手把手帶你學Docker 03042017
手把手帶你學Docker 03042017
Paul Chao
 
[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안
양재동 코드랩
 
Docker networking Tutorial 101
Docker networking Tutorial 101Docker networking Tutorial 101
Docker networking Tutorial 101
LorisPack Project
 
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 要會:台北 Docker 一日入門篇
時代在變 Docker 要會:台北 Docker 一日入門篇時代在變 Docker 要會:台北 Docker 一日入門篇
時代在變 Docker 要會:台北 Docker 一日入門篇
Philip Zheng
 

Similar to EC2 Storage for Docker 150526b (20)

Architecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsArchitecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based Deployments
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
 
Introduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group CologneIntroduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group Cologne
 
VMware@Night Container and Virtualization
VMware@Night Container and VirtualizationVMware@Night Container and Virtualization
VMware@Night Container and Virtualization
 
VMware@Night: Container & Virtualisierung
VMware@Night: Container & VirtualisierungVMware@Night: Container & Virtualisierung
VMware@Night: Container & Virtualisierung
 
BDM32: AdamCloud Project - Part II
BDM32: AdamCloud Project - Part IIBDM32: AdamCloud Project - Part II
BDM32: AdamCloud Project - Part II
 
When Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architectureWhen Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architecture
 
Observability
ObservabilityObservability
Observability
 
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
 
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
 
kubernetes for beginners
kubernetes for beginnerskubernetes for beginners
kubernetes for beginners
 
Running .NET on Docker
Running .NET on DockerRunning .NET on Docker
Running .NET on Docker
 
Docker San Francisco Meetup April 2015 - The Docker Orchestration Ecosystem o...
Docker San Francisco Meetup April 2015 - The Docker Orchestration Ecosystem o...Docker San Francisco Meetup April 2015 - The Docker Orchestration Ecosystem o...
Docker San Francisco Meetup April 2015 - The Docker Orchestration Ecosystem o...
 
手把手帶你學Docker 03042017
手把手帶你學Docker 03042017手把手帶你學Docker 03042017
手把手帶你學Docker 03042017
 
[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안
 
Docker networking Tutorial 101
Docker networking Tutorial 101Docker networking Tutorial 101
Docker networking Tutorial 101
 
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...
 
時代在變 Docker 要會:台北 Docker 一日入門篇
時代在變 Docker 要會:台北 Docker 一日入門篇時代在變 Docker 要會:台北 Docker 一日入門篇
時代在變 Docker 要會:台北 Docker 一日入門篇
 

Recently uploaded

Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
huseindihon
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
@Call @Girls Guwahati 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
@Call @Girls Guwahati 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...@Call @Girls Guwahati 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
@Call @Girls Guwahati 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
kantakumariji156
 
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design ApproachesKnowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Earley Information Science
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
Why do You Have to Redesign?_Redesign Challenge Day 1
Why do You Have to Redesign?_Redesign Challenge Day 1Why do You Have to Redesign?_Redesign Challenge Day 1
Why do You Have to Redesign?_Redesign Challenge Day 1
FellyciaHikmahwarani
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...
BookNet Canada
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
Performance Budgets for the Real World by Tammy Everts
Performance Budgets for the Real World by Tammy EvertsPerformance Budgets for the Real World by Tammy Everts
Performance Budgets for the Real World by Tammy Everts
ScyllaDB
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
AC Atlassian Coimbatore Session Slides( 22/06/2024)
AC Atlassian Coimbatore Session Slides( 22/06/2024)AC Atlassian Coimbatore Session Slides( 22/06/2024)
AC Atlassian Coimbatore Session Slides( 22/06/2024)
apoorva2579
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
K2G - Insurtech Innovation EMEA Award 2024
K2G - Insurtech Innovation EMEA Award 2024K2G - Insurtech Innovation EMEA Award 2024
K2G - Insurtech Innovation EMEA Award 2024
The Digital Insurer
 

Recently uploaded (20)

Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
@Call @Girls Guwahati 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
@Call @Girls Guwahati 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...@Call @Girls Guwahati 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
@Call @Girls Guwahati 🚒 XXXXXXXXXX 🚒 Priya Sharma Beautiful And Cute Girl any...
 
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design ApproachesKnowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
Why do You Have to Redesign?_Redesign Challenge Day 1
Why do You Have to Redesign?_Redesign Challenge Day 1Why do You Have to Redesign?_Redesign Challenge Day 1
Why do You Have to Redesign?_Redesign Challenge Day 1
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
Performance Budgets for the Real World by Tammy Everts
Performance Budgets for the Real World by Tammy EvertsPerformance Budgets for the Real World by Tammy Everts
Performance Budgets for the Real World by Tammy Everts
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
AC Atlassian Coimbatore Session Slides( 22/06/2024)
AC Atlassian Coimbatore Session Slides( 22/06/2024)AC Atlassian Coimbatore Session Slides( 22/06/2024)
AC Atlassian Coimbatore Session Slides( 22/06/2024)
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
K2G - Insurtech Innovation EMEA Award 2024
K2G - Insurtech Innovation EMEA Award 2024K2G - Insurtech Innovation EMEA Award 2024
K2G - Insurtech Innovation EMEA Award 2024
 

EC2 Storage for Docker 150526b

  • 1. EC2 Storage for DockerPersistent Containers the Right Way with Container Data Volumes EMC {code} - @clintonskitson - emccode.github.io 1
  • 2. What the heck is persistence? $$$ EMC {code} - @clintonskitson - emccode.github.io 2
  • 3. EMC {code} - @clintonskitson - emccode.github.io 3
  • 4. Is anyone using containers for persistence today? EMC {code} - @clintonskitson - emccode.github.io 4
  • 5. EMC {code} - @clintonskitson - emccode.github.io 5
  • 6. Where's the beef? How's it done today? EMC {code} - @clintonskitson - emccode.github.io 6
  • 7. EMC {code} - @clintonskitson - emccode.github.io 7
  • 8. Composability The Container Eco-System .. A Container Data Volume EMC {code} - @clintonskitson - emccode.github.io 8
  • 9. A Heterogeneous Stack and Granular Services 4 Multiple storage platforms, container runtimes, container OSs, container management platforms 4 Fast Bytes 4 Data Services 4 Data Mobility 4 Availability EMC {code} - @clintonskitson - emccode.github.io 9
  • 10. Want to use EBS volumes with container granularity? EMC {code} - @clintonskitson - emccode.github.io 10
  • 11. How are Docker Images, Graph, and Volume drivers related? --storage-driver= and --volume-driver= EMC {code} - @clintonskitson - emccode.github.io 11
  • 12. EMC {code} - @clintonskitson - emccode.github.io 12
  • 13. First, Big Thanks to the Devs! 4 David Calavera @calavera 4 Brian Goff @cpuguy83 4 Arnaud Porterie @icecrime 4 Luke Marsden @lukemarsden 4 Michael Crosby @crosbymichael 4 Alexander Morozov @LK4D4math EMC {code} - @clintonskitson - emccode.github.io 13
  • 14. 4 Jessie Frazelle @frazelledazzell 4 Tibor Vass @tiborvass 4 Jeff Lindsay @progrium EMC {code} - @clintonskitson - emccode.github.io 14
  • 15. EXPERIMENTAL (Docker 1.7) 4 Volume Enhancements #13161 4 Refactor Volume Interface 4 Prepare for Volumes as 1st class citizens 4 Create a plugin client in Docker to request storage from a Volume Manager API EMC {code} - @clintonskitson - emccode.github.io 15
  • 16. EMC {code} - @clintonskitson - emccode.github.io 16
  • 17. Volume Manager 4 Simple 4 Plumbing of Storage control plane 4 Advanced 4 Abstraction for storage, os, container runtimes 4 Guest storage introspection 4 Inter/intra-storage platform operations EMC {code} - @clintonskitson - emccode.github.io 17
  • 19. Volume Mananger in the stack Block is more difficult than NAS (NFS,CIFS) - NAS is globally advertised to a host or set of hosts - Block is targeted towards a host - Block can be surfaced as virtual hardware (below), and networked devices (aside) - Block and NAS can be managed for containers in similar ways with the right abstractions EMC {code} - @clintonskitson - emccode.github.io 19
  • 20. How does REX-Ray work? EMC {code} - @clintonskitson - emccode.github.io 20
  • 21. EMC {code} - @clintonskitson - emccode.github.io 21
  • 22. 1) OS Driver for Linux EMC {code} - @clintonskitson - emccode.github.io 22
  • 23. Linux serves as an OS that receives storage volumes as devices and must present these appropriately as mounts. OS capabilities - Get mounts - Mount/Unmount - Format EMC {code} - @clintonskitson - emccode.github.io 23
  • 24. 2) Storage Driver for EC2 (EBS) EMC {code} - @clintonskitson - emccode.github.io 24
  • 25. EBS volumes serve as the storage platform underneath the VMs, creating volumes and attaching SCSI devices on demand. Storage capabilities - Create/Remove Volumes - Create Volumes from Scratch/Snapshot/Other Volume - Attach/Detach Volumes - Create/Remove Snapshot - Copy Snapshot between regions EMC {code} - @clintonskitson - emccode.github.io 25
  • 26. Introspection - rexray get-instance = Who am I? - rexray attach-volume = Attach to me. Storage Options - --iops = supported IOPS - --volumetype = General Purpose SSD (gp2), Provisioned IOPS (io1), Magentic (standard) - --size = size in GB - --availabilityzone = target AZ EMC {code} - @clintonskitson - emccode.github.io 26
  • 27. Basic Storage Workflow - rexray new-volume --size=100 --volumetype=io1 -- iops=1000 (storage adapter) - rexray attach-volume --volumeid=vol-ssss (storage adapter - introspection) - rexray format-device --devicename=/dev/xvd_ -- fstype=ext4 (os adapter) - rexray mount-device --devicename=/dev/xvd_ -- mountpoint=/mnt/test (os adapter) EMC {code} - @clintonskitson - emccode.github.io 27
  • 28. 3) Volume Manager Driver for Docker EMC {code} - @clintonskitson - emccode.github.io 28
  • 29. The Volume Manager combines both storage and os drivers to simplify management for container runtimes and others. Managing block storage management is simplified and aligns to NAS. Volume Manager Capabilities - Create/Remove - Mount/Unmount - Path EMC {code} - @clintonskitson - emccode.github.io 29
  • 30. What Changes 4 Old way 4 Advertise block/NFS storage to instance 4 Create FS (block) 4 Mount device to mount point /mnt/vol1 4 docker run -ti -v /mnt/vol1:/vol1 busybox 4 ..then undo it all EMC {code} - @clintonskitson - emccode.github.io 30
  • 31. Hybrid of Storage/OS/Volume Workflow - rexray new-volume --volumename=testing10 --size=1 - rexray mount-volume --volumename=testing10 EMC {code} - @clintonskitson - emccode.github.io 31
  • 32. Advanced Storage Workflow - Copy Volume between AZ - rexray new-volume --volumename=testing20 --size=1 (host1) - rexray mount-volume --volumeid=vol-sss (host1) - touch /var/lib/docker/volumes/testing20/test - rexray get-volumemap (host2) - rexray get-volume --volumeid=vol-sss (host2) - rexray new-volume --volumename=testing20b -- volumeid=vol-sss --availabilityzone=blah EMC {code} - @clintonskitson - emccode.github.io 32
  • 33. 4) Docker Volume Driver EMC {code} - @clintonskitson - emccode.github.io 33
  • 34. How does it work? - docker create - Create Volume - docker start - Mount Volume - docker stop - Unmount Volume - docker rm -v - Remove Container and Volume - docker run - Create, Mount, Unmount Volume - docker run --rm - Create, Mount, Remove Volume EMC {code} - @clintonskitson - emccode.github.io 34
  • 35. 4 Commands get passed via VolumeDriverProxy 4 /usr/share/docker/plugins/rexray.spec (Unix Socket or TCP) 4 unix:///usr/share/docker/plugins/rexray.sock 4 tcp://127.0.0.1:8080 4 Currently only passes name of volume 4 Different instances can represent different profiles in the short term.. EMC {code} - @clintonskitson - emccode.github.io 35
  • 36. 4 echo -e "GET /Plugin.Activate HTTP/1.1rn" | socat unix-connect:/usr/share/docker/plugins/rexray.sock STDIO 4 /usr/src/go/bin/curl-unix-socket -v -X POST -d '{"Name":"test22"}rn' unix:///usr/share/docker/ plugins/rexray.sock:/VolumeDriver.Create 4 /usr/src/go/bin/curl-unix-socket -v -X POST -d '{"Name":"test22"}rn' unix:///usr/share/docker/ plugins/rexray.sock:/VolumeDriver.Mount EMC {code} - @clintonskitson - emccode.github.io 36
  • 37. 4 New Docker way with Volume Drivers 4 docker run -ti --volume-driver=rexray -v volumeName:/externalVol busybox 4 docker run -ti --volume-driver=rexray -v volumeName2:/externalVol2 busybox EMC {code} - @clintonskitson - emccode.github.io 37
  • 38. Host Mobility - (host1) docker run -ti --volume-driver=rexray -v testing100:/testing100 busybox touch /testing100/test exit - (host2) docker run -ti --volume-driver=rexray -v testing100:/testing100 busybox ls /testing100/test EMC {code} - @clintonskitson - emccode.github.io 38
  • 39. 4 What does this enable? 4 Run important things with data in containers 4 Composability of Volume features 4 Storage platform services are directly available to containers 4 Volumes can be easily moved between container hosts EMC {code} - @clintonskitson - emccode.github.io 39
  • 40. 4 Container images remain non-persistent, while the container data volumes are persistent 4 Container OSs remain immutable EMC {code} - @clintonskitson - emccode.github.io 40
  • 41. 4 How do you customize volumes in this experimental mode? != ideal 4 Integrate against storage platform separately 4 Create them ahead of time 4 Dedicate Unix sockets to storage profiles (size, io, type, az) EMC {code} - @clintonskitson - emccode.github.io 41
  • 42. Future - SSL and Authentication tokens - Storage profiles and settings - Volumes as 1st class citizens - Storage services - Volume updates - Asynchronous calls - Distributed volume manager - Direct to storage platforms (Docker -> EC2?) EMC {code} - @clintonskitson - emccode.github.io 42
  • 43. Thank You EMC {code} - @clintonskitson - emccode.github.io 43
  • 44. 4 go get github.com/Soulou/curl-unix-socket 4 docker run --rm -it -v $GOPATH:/go -w /go/src/ github.com/emccode/rexraycli golang:1.4.2-cross make release 4 docker run --rm -ti -e DOCKER_EXPERIMENTAL=true --privileged -v ~/ go/src/github.com/docker/docker:/go/src/ github.com/docker/docker dockercore/docker hack/ make.sh binary EMC {code} - @clintonskitson - emccode.github.io 44