Date post: | 07-Jul-2015 |
Category: |
Technology |
Upload: | docker-inc |
View: | 6,492 times |
Download: | 0 times |
Clocker The Docker Cloud Maker
Andrew Kennedy @grkvlt
Clocker The Docker Cloud Maker
@grkvlt
Introduc/on • Andrew Kennedy – So6ware Engineer – Open Source and Distributed Systems – github.com/grkvlt
• Cloudso6 Corpora/on – Open Source Applica/on Management Specialists – We’re Hiring…
@grkvlt
Agenda • Overview • Components • Deep Dive • Demonstra/on • Roadmap
Clocker Overview
@grkvlt
What does it do?
1. Spins up and Manages Docker Clouds
2. Serves up Containers on Demand 3. Manages Composite Applica/on
Deployments on Docker
@grkvlt
What does it provide? • Mul/ Host and Mul/ Container Applica/ons • Seamless Networking – Communica/on Between Services
• Orchestra/on and Clustering – Control of Containers – Container Management
@grkvlt
Who is using it? • Tes/ng and Proof of Concept Stage – Financial Services – Insurance
• Produc/on – Mul/-‐tenant Applica/on Trial – Container per service – Via IBM BlueMix
@grkvlt
Where can I find it? • Open Source • Apache 2.0 Licensed • hZp://clocker.io
• Status • 0.7.0 Beta Release • 0.8.0-‐SNAPSHOT Development
Clocker Components
@grkvlt
Clocker and Brooklyn • What is it? – Brooklyn Applica/on – Brooklyn Loca/on
• What does it provide? – First Class Docker Support in Brooklyn – Op/mized Brooklyn Blueprints for Docker
Apache Brooklyn • Apache Brooklyn – Open Source – Java – Donated to the Apache So6ware Founda/on – ASF Incubator Status
@grkvlt
Apache Brooklyn • Applica/on Management Pla^orm • Deploy, Manage and Monitor Blueprints • Provisioning, Installa/on and Customiza/on • Management – AutoScaling, Resilience, Performance, Security
Apache jclouds • Java Cloud Library • API Agnos/c – CloudStack, OpenStack, AWS EC2, GCE…
• Create Virtual Machines – Return SSH Endpoint – Manage Proper/es
@grkvlt
Apache jclouds • Drivers for REST APIs • Docker Driver – WriZen by @turlinux
• Virtual Container – Using SSH Daemon – Same Endpoint Type as VM – Composi/on on any Image or Dockerfile
@grkvlt
Docker Networking 101 • Separate Container Network • RFC 1918 Private Addresses • Non Routable
• Bridged to Host • Port Forwarding • Mul/ple Endpoints for Services
Docker Topology
@grkvlt
So6ware Defined Networking • Overlay Networks • Kernel or User Space • Many Op/ons
– Pipework – SocketPlane – Flannel – Open vSwitch – Weave
Weave Topology
@grkvlt
Weave • Ethernet Switch – User Space – Docker Container
• Mesh Topology • Routes TCP Traffic – Sniffs on Host – Forwards over TCP
Weave
Clocker Deep Dive
Clocker Architecture
Clocker Architecture
@grkvlt
Clocker Features • Applica/on Deployment – Oasis CAMP YAML Blueprint – TOSCA in Development – Same as Core Brooklyn
• Mixed Des/na/ons – Some Virtual Machines – Some Bare Metal – Some Containers
@grkvlt
Clocker Features • Docker Extensions – Container or Image – Placement Strategy – Dockerfiles
• Manages Docker – Cloud Deployment – Configura/on – Run/me Control
@grkvlt
Container Management • Sources – Docker Image Defini/on – Docker Hub – Dockerfile – Brooklyn En/ty Defini/on
• Create Image Automa/cally – Commit or Push for Reuse
@grkvlt
Container Management • Installa/on of Services – Defined by Brooklyn or Dockerfile – Common to all En/ty Instances
• Commit Image – Available for next En/ty
• Push Image – Available for all Hosts
Container Management id: dockerfile-‐mysql name: "Docker Hub MySQL Application" origin: "https://registry.hub.docker.com/_/mysql/" locations: -‐ my-‐docker-‐cloud services: -‐ serviceType: brooklyn.entity.container.docker.application.DockerfileApplication id: mysql name: "MySQL" brooklyn.config: docker.dockerfile.url: "https://s3-‐eu-‐west-‐1.amazonaws.com/brooklyn-‐clocker/mysql-‐5.6.tgz" docker.container.environment: MYSQL_ROOT_PASSWORD: "s3cr3t”
@grkvlt
Container Placement • Demand
– Adding an Applica/on – Scaling exis/ng Applica/on
• Requirements – Host Loca/on – Service Resources – CPU, Memory
@grkvlt
Container Placement • Supply – Choose a Host from available – Create new Host
• Start Container – Set CPU and Memory – AZach to Network
@grkvlt
Container Placement • Placement Strategies
– Filter Hosts – Sort Hosts
• Informa/on from – Docker – Underlying Machine – Cloud Environment – En/ty or Service
@grkvlt
Container Placement • Placement Strategies – Random, Depth or Breadth First – CPU or Memory Usage – Memory, CPU or Container Limits – Geographic Constraints
• User Defined – Java Predicate
Placement Strategy • Determinis/c • Simple – Predicate and Comparator
docker.container.strategies: -‐ $brooklyn:object: type: "brooklyn.location.docker.strategy.MaxContainersPlacementStrategy” brooklyn.config: maxContainers: 16 -‐ $brooklyn:object: type: "brooklyn.location.docker.strategy.CpuUsagePlacementStrategy” brooklyn.config: maxCpu: 0.75
@grkvlt
Container Provisioning • Provisioning Strategy – New Docker Host Loca/on
• Constraints – Docker Infrastructure Constraints – En/ty or Applica/on Constraints
• User Defined Strategies • Intelligent Container Orchestra/on
@grkvlt
Container Provisioning • Headroom – Ensure resources available – Based on MaxContainers strategy limit – Or CPU and RAM alloca/on
• Scale Docker Host Cluster Automa/cally – Add new Docker hosts – Remove empty Docker hosts
@grkvlt
Networking • Shared Weave LAN – Common to All Containers – Private (Link Local) Addresses
• Clocker Controls IP Alloca/on – Applica/ons Segmented by CIDR
• Docker Port Forwarding Access
@grkvlt
Networking • Work in Progress • Name Resolu/on – BIND and DNSmasq or Weave DNS – Needed for JMX et al – Enables Many More En//es
• Adding More Supported Blueprints
Demonstra>on
@grkvlt
Roadmap • Latest Docker Feature Support • Swarm
– Same API – Can re-‐use our jclouds Driver
• Machine – Cloud agnos/c provisioning via jclouds already – Could support as an op/on
@grkvlt
Roadmap • Networking – DNS and DNSmasq Integra/on – Rancher Integra/on – Open vSwitch Integra/on
• Gelng Started – Clocker Dockerfile
@grkvlt
Roadmap • Repositories – Docker Repository – Bintray, Ar/factory, Quay.io – Private Repositories
• Applica/on Defini/on – TOSCA – Fig
@grkvlt
Roadmap • Plugin API may be helpful? • Provide services to Docker this way • Orchestra/on • Policies
• Consume wider range of services • Networking
@grkvlt
Summary • Clocker – Brooklyn + jclouds + Docker + Weave + … – @clockercentral
• Solves – Composite Applica/on Management – Docker Cloud Networking – Container Placement and Provisioning
@grkvlt
Audience Ques/ons? 1. What networking features would
make Docker easier to use? 2. What other features would be most
useful to enhance Docker usability? 3. Will you be tes/ng Swarm and
Machine or would you prefer an external orchestra/on tool?
@grkvlt
Web Resources http://clocker.io/ http://brooklyn.io/ http://docker.io/ http://github.com/zettio/weave/ http://abstractvisitorpattern.co.uk/ https://speakerdeck.com/grkvlt/clocker-‐the-‐docker-‐cloud-‐maker
50!
Thanks! Ques>ons?