Deploying Containers
with Rancher
Chris	Tankersley	
@dragonmantank	
Day	Camp	4	Developers,	Ops	for	Devs	
Day	Camp	4	Developers	-	Ops	for	Devs	 1
What Is Rancher?
Day	Camp	4	Developers	-	Ops	for	Devs	 2
Rancher and RancherOS
Day	Camp	4	Developers	-	Ops	for	Devs	 3
Why Use Rancher?
Day	Camp	4	Developers	-	Ops	for	Devs	 4
Manages your Containers
Day	Camp	4	Developers	-	Ops	for	Devs	 5
Manages your Hosts
Day	Camp	4	Developers	-	Ops	for	Devs	 6
Allows you to monitor containers
Day	Camp	4	Developers	-	Ops	for	Devs	 7
Allows you to manage your applications
Day	Camp	4	Developers	-	Ops	for	Devs	 8
Allows you to deploy your applications
Day	Camp	4	Developers	-	Ops	for	Devs	 9
Allows you to deploy your applications
Day	Camp	4	Developers	-	Ops	for	Devs	 10
Supports Docker Compose
Day	Camp	4	Developers	-	Ops	for	Devs	 11
Installation
Day	Camp	4	Developers	-	Ops	for	Devs	 12
Install Docker on a machine
Day	Camp	4	Developers	-	Ops	for	Devs	 13
Using Docker Machine
Day	Camp	4	Developers	-	Ops	for	Devs	 14
Our Setup
•  3	Machines	
•  1	Rancher	Server	
•  2	Rancher	Nodes	
•  All	running	RancherOS	
•  Docker	1.11	
Day	Camp	4	Developers	-	Ops	for	Devs	 15
docker-machine Command
docker-machine	create	-d	virtualbox		
				--virtualbox-boot2docker-url	http://releases.rancher.com/os/latest/rancheros.iso		
				--virtualbox-memory	“2048”		
				[node	name]	
Day	Camp	4	Developers	-	Ops	for	Devs	 16	
hMp://docs.rancher.com/os/running-rancheros/workstaQon/docker-machine/
Machines Build
Day	Camp	4	Developers	-	Ops	for	Devs	 17
Add rancher/server to the master
Day	Camp	4	Developers	-	Ops	for	Devs	 18	
docker	run	-d		
				--restart=always		
				-p	8080:8080		
				–name=rancher		
				rancher/server
Add rancher/agent to nodes
Day	Camp	4	Developers	-	Ops	for	Devs	 19	
docker	run	-d		
				--privileged		
				-v	/var/run/docker.sock:/var/run/docker.sock		
				rancher/agent:v0.7.9		
				http://192.168.99.100:8080/v1/scripts/[hash]
All Done!
Day	Camp	4	Developers	-	Ops	for	Devs	 20
Manual Container Deployments
Day	Camp	4	Developers	-	Ops	for	Devs	 21
Add Container to Node
Day	Camp	4	Developers	-	Ops	for	Devs	 22
Fill out Container Info
Day	Camp	4	Developers	-	Ops	for	Devs	 23
Wait for it to become active
Day	Camp	4	Developers	-	Ops	for	Devs	 24
Wait for it to become active
Day	Camp	4	Developers	-	Ops	for	Devs	 25
See it running
Day	Camp	4	Developers	-	Ops	for	Devs	 26
Visit the Container
Day	Camp	4	Developers	-	Ops	for	Devs	 27
Metrics
Day	Camp	4	Developers	-	Ops	for	Devs	 28
Viewing Container Metrics
Day	Camp	4	Developers	-	Ops	for	Devs	 29
Viewing Host Metrics
Day	Camp	4	Developers	-	Ops	for	Devs	 30
Stacks
Day	Camp	4	Developers	-	Ops	for	Devs	 31
What are Stacks?
Day	Camp	4	Developers	-	Ops	for	Devs	 32
Adding a Service
Day	Camp	4	Developers	-	Ops	for	Devs	 33
Adding a Service
Day	Camp	4	Developers	-	Ops	for	Devs	 34
Adding a Service
Day	Camp	4	Developers	-	Ops	for	Devs	 35
Adding a Service
Day	Camp	4	Developers	-	Ops	for	Devs	 36
Adding a Service
Day	Camp	4	Developers	-	Ops	for	Devs	 37
Rancher Auto-Deploys
Day	Camp	4	Developers	-	Ops	for	Devs	 38
Add an Apache/PHP Service
Day	Camp	4	Developers	-	Ops	for	Devs	 39
Let it deploy
Day	Camp	4	Developers	-	Ops	for	Devs	 40
Visit the web server
Day	Camp	4	Developers	-	Ops	for	Devs	 41
Check Deployments in Infrastructure
Day	Camp	4	Developers	-	Ops	for	Devs	 42
Custom Repositories
Day	Camp	4	Developers	-	Ops	for	Devs	 43
Adding Private/Custom Registry
Day	Camp	4	Developers	-	Ops	for	Devs	 44
Type in Auth Info
Day	Camp	4	Developers	-	Ops	for	Devs	 45
All the nodes can use it!
Day	Camp	4	Developers	-	Ops	for	Devs	 46
Deploying Upgrades
Day	Camp	4	Developers	-	Ops	for	Devs	 47
Deployment Types
•  Blue-Green	Deployments	
•  Rolling	Deployments	
Day	Camp	4	Developers	-	Ops	for	Devs	 48
Blue-Green Deployments
Day	Camp	4	Developers	-	Ops	for	Devs	 49	
Router	
App	v1	 App	v2
Blue-Green Deployments
Day	Camp	4	Developers	-	Ops	for	Devs	 50	
Router	
App	v3	 App	v2
Blue-Green Deployments
Day	Camp	4	Developers	-	Ops	for	Devs	 51	
Router	
App	v3	 App	v2
Rolling Deployments
Day	Camp	4	Developers	-	Ops	for	Devs	 52	
App	v1
Rolling Deployments
Day	Camp	4	Developers	-	Ops	for	Devs	 53	
App	v2
Rolling Deployments
Day	Camp	4	Developers	-	Ops	for	Devs	 54	
App	v2
New Container for Web Server
#	Dockerfile	
FROM	php:apache	
	
COPY	index.php	/var/www/html	
Day	Camp	4	Developers	-	Ops	for	Devs	 55
Push to Docker Hub
Day	Camp	4	Developers	-	Ops	for	Devs	 56
Upgrade Webserver Container
Day	Camp	4	Developers	-	Ops	for	Devs	 57
Upgrade Webserver Container
Day	Camp	4	Developers	-	Ops	for	Devs	 58
Rancher Upgrades it
Day	Camp	4	Developers	-	Ops	for	Devs	 59
Rancher lets us know it’s done
Day	Camp	4	Developers	-	Ops	for	Devs	 60
Check Container once Upgraded
Day	Camp	4	Developers	-	Ops	for	Devs	 61
Rollback or Finish
Day	Camp	4	Developers	-	Ops	for	Devs	 62
Do it again
•  Edit	My	Code	
•  Build	My	Image	
•  Push	to	Docker	Hub	
•  Upgrade	the	Service	
Day	Camp	4	Developers	-	Ops	for	Devs	 63
Rancher CLI
Day	Camp	4	Developers	-	Ops	for	Devs	 64
What is it?
•  Rancher	has	an	API!	
•  Small	executable	that	interacts	with	Rancher	API	
•  Kind	of	like	a	custom	docker-compose	
Day	Camp	4	Developers	-	Ops	for	Devs	 65
Get an API Key
Day	Camp	4	Developers	-	Ops	for	Devs	 66
Get an API Key
Day	Camp	4	Developers	-	Ops	for	Devs	 67
Download Rancher CLI
Day	Camp	4	Developers	-	Ops	for	Devs	 68
Export Stack Config
Day	Camp	4	Developers	-	Ops	for	Devs	 69
Two Config Files
Day	Camp	4	Developers	-	Ops	for	Devs	 70
docker-compose.yml
Day	Camp	4	Developers	-	Ops	for	Devs	 71
Deploy Script
Day	Camp	4	Developers	-	Ops	for	Devs	 72	
ACCESS_KEY="C4F407CE1D8C59EB53BE"	
SECRET="daNENHR241Jzm5Z9iw6VsujD9hWfjHWrDzkKmKiA"	
RANCHER_URL="http://192.168.99.100:8080"	
	
./rancher-compose	--secret-key=${SECRET}	--access-key=${ACCESS_KEY}	--url=${RANCHER_URL}	--
file=docker-compose.yml	--rancher-file=rancher-compose.yml	-p	phptest	up	--upgrade	-d
Edit and Deploy
Day	Camp	4	Developers	-	Ops	for	Devs	 73
Edit and Deploy
Day	Camp	4	Developers	-	Ops	for	Devs	 74
Finish Upgrade
Day	Camp	4	Developers	-	Ops	for	Devs	 75
Storage Pools
Day	Camp	4	Developers	-	Ops	for	Devs	 76
What do they do?
•  Convoy	
•  Plugins	that	allow	distributed	volumes	
•  GlusterFS,	NFS	
Day	Camp	4	Developers	-	Ops	for	Devs	 77
Networking
Day	Camp	4	Developers	-	Ops	for	Devs	 78
Key Features
•  Deployments	keep	links	intact	
•  Networks	can	span	hosts	
Day	Camp	4	Developers	-	Ops	for	Devs	 79
Thanks!
-  Docker	for	Developers	
-  LearningContainers.com	
-  hMp://ctankersley.com	
-  @dragonmantank	
-  chris@ctankersley.com	
Day	Camp	4	Developers	-	Ops	for	Devs	 80	
Rate	this	talk	on	Joind.in	
hMps://joind.in/talk/ce080

Deploying Containers with Rancher