Multi-Container Applications: Andrew Kennedy
Multi-Container Applications: Andrew Kennedy
Multi-Container Applications: Andrew Kennedy
Applications
Spanning Docker, Mesos and OpenStack
Andrew Kennedy
Clocker Project Founder
Cloudsoft Corporation Limited
Agenda
Introduction Features
What is Clocker? Adding extra capabilities
to applications using
Clocker
Blueprints Demonstration
Defining multi-container Live application
applications across deployment across
multiple target Docker, Mesos and
destinations OpenStack
“Containers, not
Virtual Machines,
are the Future
Cloud.”
Introduction
What is Clocker?
@grkvlt
Clocker Statistics
About the Clocker Project
Open Source
1+ Years Old
822 Commits
193 Pull Requests
14 Contributors
2 External
19 KLOC
31 Releases http://www.redotheweb.com/CodeFlower/
@grkvlt
Apache Brooklyn
Application Management Platform
@grkvlt
Apache jclouds
Java Cloud Library
API Agnostic
OpenStack, SoftLayer, Azure, GCE , AWS EC2, …
@grkvlt
Docker Engine
Container Management
Isolation
Environment
Performance
Resource Allocation
Composable
Huge Ecosystem
Internal and External
Compute Abstraction
Process Wrapper
Microservices
@grkvlt
Docker Extras
Integrating More Features and Capabilities into Docker
Software-Defined Networking
Project Calico
Weave
@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
Clocker Positioning
Application
Centric
Platform Platform
Specific Agnostic
Infrastructure
Centric
@grkvlt
Features
Adding extra capabilities to applications
using Clocker
Clocker Features
Arbitrary Entities
Start Marathon Task with Ubuntu Image
Networking
Project Calico Network Module Integration
@grkvlt
Networking Capabilities
Software-Defined Networking
Cloud Virtual
Brooklyn
Provider Machine
Docker
Container
Engine
SDN Network
Clocker
Provider Segment
Mesos Marathon
Cluster Task
@grkvlt
Blueprints
Defining multi-container applications across
multiple target destinations
Application Blueprint
id: my-application
location: my-docker-cloud
services:
- type: docker:redis:3
id: redis
openPorts: 6379
- type: docker:clockercentral/dnmonster:1.0
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
@grkvlt
Application Blueprint
id: my-application
location: my-docker-cloud
services:
- type: docker:redis:3
id: redis
openPorts: 6379
- type: docker:clockercentral/dnmonster:1.0
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
@grkvlt
Application Blueprint
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:clockercentral/dnmonster:1.0
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
@grkvlt
Application Blueprint
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:clockercentral/dnmonster:1.0
location: my-docker-cloud
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
location: my-docker-cloud
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
@grkvlt
Application Blueprint
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:clockercentral/dnmonster:1.0
location: my-mesos-cluster
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
location: my-docker-cloud
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
@grkvlt
Application Blueprint
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:clockercentral/dnmonster:1.0
location: my-mesos-cluster
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
location: my-docker-cloud
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")
@grkvlt
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
[email protected]
http://clocker.io/
Web Resources
clocker.io
brooklyn.io
github.com/brooklyncentral/clocker/
projectcalico.com
mesos.apache.org
blog.abstractvisitorpattern.co.uk
@grkvlt