Multi-Container
Applications
Spanning Docker, Mesos and OpenStack
Andrew Kennedy
Clocker Project Founder
Cloudsoft Corporation
Agenda
Features
Adding extra capabilities
to applications using
Clocker
Demonstration
Live application
deployment across
Docker, Mesos and
OpenStack
Introduction
What is Clocker?
Blueprints
Defining multi-container
applications across
multiple target
destinations
“Containers, not
Virtual Machines,
are the Future
Cloud.”
Introduction
What is Clocker?
@grkvlt
@grkvlt
Clocker Statistics
About the Clocker Project
Open Source
1+ Years Old
786 Commits
183 Pull Requests
14 Contributors
2 External
15 KLOC
31 Releases
Version 1.1.0 available now
http://www.redotheweb.com/CodeFlower/
@grkvlt
Application Management Platform
Define Application using Blueprints
OASIS CAMP and TOSCA Standards
Deploy, Manage and Monitor Applications
Provisioning, Installation and Customization
Runtime Management and Monitoring
Policies
AutoScaling, Resilience, Performance, Security
Apache Brooklyn
@grkvlt
Apache jclouds
Java Cloud Library
API Agnostic
OpenStack, SoftLayer, Azure, GCE , AWS EC2, …
Create Virtual Machines
Return SSH Endpoint
Create Containers
Docker Provider
Uses REST API
Configuration
Execute Commands
@grkvlt
Docker Engine
Isolation
Environment
Performance
Resource Allocation
Composable
Huge Ecosystem
Internal and External
Compute Abstraction
Process Wrapper
Microservices
Container Management
@grkvlt
Docker Extras
Integrating More Features and Capabilities into Docker
Software-Defined Networking
Project Calico
Weave
Storage and Volume Management
Flocker
More Being Developed…
Native Plugins
Docker Tools
Swarm
Compose
@grkvlt
Apache Mesos
Distributed Systems Kernel
Cluster Management
Resource Sharing and Placement
Calico SDN Support
Frameworks
Aurora, Chronos
Marathon
Riak, Spark, Storm
Hadoop
Tasks
Marathon for Docker
@grkvlt
Docker Cloud Properties
1. On-demand
2. Multi-Tenant
3. Hardware Independent
4. Application Level
@grkvlt
Platform
Specific
Platform
Agnostic
Application
Centric
Infrastructure
Centric
Clocker Positioning
Features
Adding extra capabilities to applications
using Clocker
@grkvlt
Clocker Features
1. Spins up and Manages Docker
Clusters in the Cloud
2. Deploys Containers and
Networks on Demand
3. Manages Multi-Container
Application Deployments
@grkvlt
Clocker Blueprints
@grkvlt
Application Orchestration
Docker
Engine
Virtual
Machine
Container
Clocker
Network
Segment
SDN
Provider
Cloud
Provider
Brooklyn
Mesos
Cluster
Marathon
Task
@grkvlt
Apache Mesos Integration
Marathon Framework
Connect to Existing Mesos Cluster
Scan for Frameworks
Marathon Location for Deployment
Docker Container Entites
Become Marathon Tasks
Arbitrary Entities
Start Marathon Task with Ubuntu Image
Networking
Project Calico Network Module Integration
@grkvlt
Networking Capabilities
Security Policy for Network Traffic
Inter-Container and External Firewalling
Wide Area and Multi Region SDN
VPN or IPIP and NAT Configuration
Cross Platform SDN
Both VMs and Containers on a Private Network
Name Resolution and Service Discovery
Weave DNS or Similar Lightweight DNS Implementation
Traditional BIND DNS Server via a Brooklyn Entity
Brooklyn Injects Endpoint IP Addresses and Port Numbers
@grkvlt
Metaswitch Project Calico
Layer 3 Software-Defined Networking
Runs on Bare Metal, VMs and Containers
Uses OS IP routing and forwarding
Internet Scale using BGP
Centralised configuration with etcd
Uses libnetwork in Docker 1.9.0
Spans VMs, Mesos and Containers
Calico OpenStack Neutron Driver
Calico Docker Networking Plugin
Calico Network Module for Mesos
@grkvlt
Container
172.16.1.1
Host
10.1.1.1
SDN
Controller
Container
172.16.1.2
Internet SDN
Gateway
Host
10.1.1.2
SDN
Agent
SDN
Agent
Clocker Networking
Blueprints
Defining multi-container applications across
multiple target destinations
@grkvlt
id: my-application
location: my-docker-cloud
services:
- type: docker:redis:3
id: redis
openPorts: 6379
- type: docker:amouat/dnmonster:1.0
id: dnmonster
openPorts: 8080
- type: docker:amouat/identidock:1.0
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
Application Blueprint One
@grkvlt
id: my-application
location: my-docker-cloud
services:
- type: org.apache.brooklyn.entity.nosql.redis.RedisStore
id: redis
install.version: 3.0.0
- type: docker:amouat/dnmonster:1.0
id: dnmonster
openPorts: 8080
- type: docker:amouat/identidock:1.0
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
Application Blueprint Two
@grkvlt
id: my-application
services:
- type: org.apache.brooklyn.entity.nosql.redis.RedisStore
location: my-openstack-cloud
id: redis
install.version: 3.0.0
- type: docker:amouat/dnmonster:1.0
location: my-docker-cloud
id: dnmonster
openPorts: 8080
- type: docker:amouat/identidock:1.0
location: my-docker-cloud
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
Application Blueprint Three
@grkvlt
id: my-application
services:
- type: org.apache.brooklyn.entity.nosql.redis.RedisStore
location: my-openstack-cloud
id: redis
install.version: 3.0.0
- type: docker:amouat/dnmonster:1.0
location: my-mesos-cluster
id: dnmonster
openPorts: 8080
- type: docker:amouat/identidock:1.0
location: my-docker-cloud
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
Application Blueprint Four
Demonstration
Live application deployment across Docker,
Mesos and OpenStack
“Clocker solves: Docker
Cloud Networking,
Container Placement and
Provisioning, and
Composite Application
Management.”
Thank you!
Andrew Kennedy
@grkvlt
andrew@cloudsoft.io
http://clocker.io/
@grkvlt
clocker.io
brooklyn.io
github.com/brooklyncentral/clocker/
projectcalico.com
mesos.apache.org
blog.abstractvisitorpattern.co.uk
Web Resources

Multi-Container Apps spanning Docker, Mesos and OpenStack