Top Banner
Discovering Docker Volume Plugins and Apps using VirtualBox Clint Kitson * Developer Advocate Leader emccode.github.io
26

Discovering Docker Volume Plugins and Apps using VirtualBox

Apr 15, 2017

Download

Technology

Clinton Kitson
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Discovering Docker Volume Plugins and Apps using VirtualBox

Discovering+Docker+Volume+Plugins+and+Apps+using+VirtualBox

Clint&Kitson&*&Developer&Advocate&Leader

emccode.github.io

Page 2: Discovering Docker Volume Plugins and Apps using VirtualBox

descrip(on

There%are%right%and%wrong%ways%to%use%containers%with%persistent%applica4ons.%Lucky%for%you,%doing%it%the%right%way%is%much%easier%nowadays%with%Docker%Volume%Plugins.%This%talk%will%focus%on%doing%some%basic%educa4on%including%mostly%live%demos%to%show%how%you%can%take%advantage%of%these%new%capabili4es%for%expanding%how%you%leverage%containers.

Page 3: Discovering Docker Volume Plugins and Apps using VirtualBox

Agenda

• Docker(Volume(Plugin(overview

• Volume(Plugins(with(VirtualBox(in(ac9on

• Inves9ga9ng(applica9ons(and(running(with(Volume(Plugin

• Thinking(about(availability

• Performing(failAover(of(a(container(to(another(container(host

Page 4: Discovering Docker Volume Plugins and Apps using VirtualBox

Situa&on/Problem

• When&I&run&a&persistent&applica1on&in&a&container,&where&does&my&data&get&stored?

• Possibly&a&data&volume

• Possibly&container&volume

• Possibly&an&exis1ng&private&mounted&volume&from&networked&storage

• ..&howto&build&a&snowflake

• Container&hosts&should&be&immutable

Page 5: Discovering Docker Volume Plugins and Apps using VirtualBox

Enter&Docker&Extensibility

• Volume

• Network

• Authoriza2on

• Composable8and8sustainable

• Consumed8solely8through8Docker8API

• Up8to8consuming8ecoAsystem8to8leverage8func2onality,8ie.8container8schedulers

Page 6: Discovering Docker Volume Plugins and Apps using VirtualBox

What%are%Docker%Volume%Plugins

• Drama&cally*simplifies*external*storage*for*usage*with*containers

• Service*that*runs*alongside*Docker*daemon*receiving*Plugin*requests

• Extensible*storage*orchestra&on

• Lunch*is*ready*at*/var/lib/plugin/volumes/vol1/data

• Serves*requests*for*Volume*Create/Remove/Mount/Unmount/Path

Page 7: Discovering Docker Volume Plugins and Apps using VirtualBox

How$do$we$play?

• VirtualBox,can,be,used,similar,to,explore

• VirtualBox,is,popular,and,works,well,on,laptops

• Provides,shared,storage,pla;orm,through,Virtual,Media

• or,GCE,,AWS,EC2,,Openstack,Cinder,,EMC,ScaleIO/XtremIO/Isilon/VMAX

• or,other,Volume,Plugins

• MulIple,container,hosts,(VMs),to,ensure,failover,and,immutability

Page 8: Discovering Docker Volume Plugins and Apps using VirtualBox

Typical(Install(and(Configure

• Installcurl -sSL https://dl.bintray.com/emccode/rexray/install | sh -

• /etc/rexray/config.ymlrexray: logLevel: warn storageDrivers: - virtualbox mount: volume: preempt: falsevirtualbox: endpoint: http://10.0.2.2:18083 tls: false volumePath: "/Users/clintonkitson/Repos/vagrant-rexray/Volumes" controllerName: SATA

Page 9: Discovering Docker Volume Plugins and Apps using VirtualBox

Super&Simple&Example&using&Vagrant&and&VirtualBox

• Requires

• Vagrant

• VirtualBox25.0.10+

• VBoxManage setproperty websrvauthlibrary null

• vboxwebsrv -H 0.0.0.0 -v -b

Page 10: Discovering Docker Volume Plugins and Apps using VirtualBox

Vagrant'example

git clone https://github.com/jonasrosland/vagrant-rexraycd vagrant-rexrayvagrant upvagrant ssh rexray-1

Page 11: Discovering Docker Volume Plugins and Apps using VirtualBox

Discover)REX-Ray)and)VirtulBox)on)rexray-1

sudo surexrayrexray volume --helprexray volume lsrexray volume create --volumename=testing --size=1rexray volume mount --volumename=testingls /var/lib/rexray/volumes/testing/datarexray volume unmount --volumename=testingrexray stoprexray start

Page 12: Discovering Docker Volume Plugins and Apps using VirtualBox

docker'volume'create'.'rexray.1

docker volumedocker volume create \ --driver=rexray --name=meetup1 --opt=size=2docker volume ls

Page 13: Discovering Docker Volume Plugins and Apps using VirtualBox

docker'run'with'busybox

docker run -ti \ --volume-driver=rexray -v meetup1:/meetup1 \ busyboxdf /meetup1touch /meetup1/helloexit

Page 14: Discovering Docker Volume Plugins and Apps using VirtualBox

docker'run'to'verify'with'busybox

docker run -ti \ --volume-driver=busybox -v meetup1:/meetup1 \ busyboxls /meetup1exit

Page 15: Discovering Docker Volume Plugins and Apps using VirtualBox

docker'run'with'sharing'volume

docker run -tid --name=container1 \ --volume-driver=rexray -v meetup1:/meetup1 busyboxdocker run -ti --volumes-from=container1 busyboxls /meetup1exitdocker exec container1 ls /meetup1docker stop container1

Page 16: Discovering Docker Volume Plugins and Apps using VirtualBox

Discovering+Volumes+and+Container+Images

• REX%Ray(Docs(on(Applica2ons

• Dockerfile(includes(a(VOLUME(instruc2on

• VOLUME(["/data"]

• Up(to(container(image(maintainer(to(properly(designate(appropriate(loca2on(of(persistent(data

• Makes(a(container(workload(portable

• Enables(immutable(hosts

Page 17: Discovering Docker Volume Plugins and Apps using VirtualBox

Discovering+Apps+and+Volumes+using+postgres

• postgres)on)docker)hub

• Dockerfile)for)postgres)9.5

• VOLUME)/var/lib/postgresql/data

Page 18: Discovering Docker Volume Plugins and Apps using VirtualBox

running&postgres&,&internal&data&volume

docker run --name some-postgres \ -e POSTGRES_PASSWORD=mysecretpassword -d \ postgresdocker rm -f some-postgres

Page 19: Discovering Docker Volume Plugins and Apps using VirtualBox

running&postgres&,&external&data&volume

docker volume create \ --driver=rexray --name=pdata --opt=size=3docker run --name some-postgres \ -e POSTGRES_PASSWORD=mysecretpassword -d \ --volume-driver=rexray -v pdata:/var/lib/postgresql/data \ postgresls /var/lib/rexray/volumes/pdata/datadocker logs some-postgresexit

Page 20: Discovering Docker Volume Plugins and Apps using VirtualBox

try$a$failover$,$on$rexray,2

vagrant ssh rexray-2sudo sudocker run --name some-postgres \ -e POSTGRES_PASSWORD=mysecretpassword -d \ --volume-driver=rexray -v pdata:/var/lib/postgresql/data \ postgres

Page 21: Discovering Docker Volume Plugins and Apps using VirtualBox

Thinking'About'Availability

• Always(sharing(isn't(the(answer

• Safety(first(for(ext4/xfs

• Failure(scenarios?

• Container(dies?

• Container(run>me(borks?

• Kernel(problems?

• Host(unresponsive?

• ..(volumes(are(typically(aGached(and(locked(to(hosts

Page 22: Discovering Docker Volume Plugins and Apps using VirtualBox

turn%on%volume%mount%pre,emp-on

• vi$/etc/rexray/config.yml

• set$rexray.volume.mount.preempt: true

• rexray$stop

• rexray$start

Page 23: Discovering Docker Volume Plugins and Apps using VirtualBox

do#a#failover#+#on#rexray+2

docker run --name some-postgres \ -e POSTGRES_PASSWORD=mysecretpassword -d \ --volume-driver=rexray -v data:/var/lib/postgresql/data \ postgres

Page 24: Discovering Docker Volume Plugins and Apps using VirtualBox

Summary

• Volume(plugins(are(great

• Keep(container(hosts(immutable

• Persistent(volumes(can(be(orchestrated(for(containers

• Container(images(with(volumes(specified(are(easy(to(make(persistent

Page 25: Discovering Docker Volume Plugins and Apps using VirtualBox

EMC${code}$+$emccode.github.io

• Looking(for(folks(that(are(passionate(about(Containers,(Open(Source,(and(DevOps

• REX?Ray

• RackHD

• mesos?module?dvdi

• OSS(ContribuCon(?(Docker,(Mesos,(others

Page 26: Discovering Docker Volume Plugins and Apps using VirtualBox

THANK&YOUemccode.github.io