Docker 
Networking 
with 
Clocker 
and 
Weave 
Andrew 
Kennedy 
@grkvlt 
Edinburgh 
Docker 
Meetup, 
November 
2014
Introduc)on 
• Andrew 
Kennedy 
– So1ware 
Engineer 
– Open 
Source 
– github.com/grkvlt 
• Cloudso1 
Corpora)on 
– Local 
(CodeBase) 
Company 
– We’re 
Hiring…
Introduc)on 
• Moving 
Parts 
• Docker 
• Weave 
• Clocker 
• Brooklyn 
• Demonstra)on
Clocker 
Project 
• What 
does 
it 
do? 
– Manages 
Docker 
Infrastructure 
– Deploys 
Blueprints 
to 
Docker 
• What 
is 
it? 
– Brooklyn 
Applica)on 
– Brooklyn 
Loca)on
Docker 
• Popular 
– Huge 
Ecosystem 
– Growing 
– Complex 
• Containers 
– Isola)on 
– Performance 
– Composable
Docker
LimitaEons… 
Docker 
LimitaEons…
Docker 
Limita)ons 
• Mul)ple 
Hosts 
• Networking 
– Same 
Issue 
– Communica)on 
Between 
Services 
• Orchestra)on 
and 
Clustering 
– Control 
of 
Containers 
– Container 
Management
Docker 
Limita)ons 
• Plugin 
API 
will 
Help 
• Not 
standardized 
yet 
• Working 
on 
it… 
• Need 
to 
avoid 
lock-­‐in 
• One 
size 
fits 
all 
is 
never 
good 
enough
Docker 
Networking 
• Separate 
Container 
Network 
• RFC 
1918 
Private 
Addresses 
• Non 
Routable 
• Bridged 
to 
Host 
• Port 
Forwarding 
• Mul)ple 
Endpoints 
for 
Services
Docker 
Topology
So1ware 
Defined 
Networking 
• Overlay 
Networks 
• Kernel 
or 
User 
Space 
• Many 
Op)ons 
– Pipework 
– SocketPlane 
– Flannel 
– Open 
vSwitch 
– Weave
Weave 
• Ethernet 
Switch 
– User 
Space 
– Docker 
Container 
• Mesh 
Topology 
• Routes 
TCP 
Traffic 
– Sniffs 
on 
Host 
– Forwards 
over 
TCP
Weave
Clocker 
Project
Clocker 
Project 
• Open 
Source 
• GitHub 
• Apache 
2.0 
Licensed 
• Java 
• Recently 
Developed 
• S)ll 
Beta 
Status 
• 0.7.0-­‐SNAPSHOT
Why 
Clocker 
• Docker 
Popularity 
– Solve 
Some 
Limita)ons 
• Best 
of 
Breed 
– Configura)on 
– Components 
• Brooklyn 
Integra)on 
– Container 
to 
En)ty 
Mapping
Apache 
Brooklyn 
• Apache 
Brooklyn 
– Cloudso1 
Product 
– Open 
Source 
Java 
– Donated 
to 
the 
ASF 
– Incubator 
Status
Apache 
Brooklyn 
• Applica)on 
Management 
Placorm 
• Deploy, 
Manage 
and 
Monitor 
Blueprints 
• Provisioning, 
Installa)on 
and 
Customiza)on 
• Management 
• AutoScaling, 
Resilience, 
Performance, 
Access
Apache 
Jclouds 
• Java 
Cloud 
Library 
• API 
Agnos)c 
– CloudStack, 
OpenStack, 
AWS 
EC2, 
GCE… 
• Create 
Virtual 
Machines 
– Return 
SSH 
Endpoint 
– Manage 
Proper)es
Apache 
Jclouds 
• Drivers 
for 
REST 
APIs 
• Docker 
Driver 
– Wrifen 
by 
@turlinux 
• Virtual 
Container 
– Using 
SSH 
Daemon 
– Same 
Endpoint 
Type 
as 
VM 
– Composi)on 
on 
any 
Image 
or 
Dockerfile
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
Container 
Management 
• Sources 
– Docker 
Image 
Defini)on 
– Docker 
Hub 
– Dockerfile 
– Brooklyn 
En)ty 
Defini)on 
• Create 
Image 
Automa)cally 
– Commit 
or 
Push 
for 
Reuse
Container 
Placement 
• Placement 
Strategies 
– Random, 
Depth 
or 
Breadth 
First 
– CPU 
or 
Memory 
Usage 
– Memory, 
CPU 
or 
Container 
Limits 
– Geographic 
Constraints 
• User 
Defined 
– Java 
Predicate
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
Networking 
• S)ll 
First 
Steps… 
• Name 
Resolu)on 
– BIND 
and 
DNSmasq 
– Needed 
for 
JMX 
et 
al 
• Enables 
Many 
More 
En))es 
• But 
Needs 
Tested!
DemonstraEon
Roadmap 
• Networking 
– DNS 
and 
DNSmasq 
Integra)on 
– Rancher 
Integra)on 
– Open 
vSwictch 
Integra)on 
• Gelng 
Started 
– Clocker 
Dockerfile
Roadmap 
• Repositories 
– Docker 
Repository 
– Bintray, 
Ar)factory, 
Quay.io 
– Private 
Repositories 
• Applica)on 
Defini)on 
– TOSCA
Summary 
• Clocker 
– Brooklyn 
+ 
Docker 
+ 
Jclouds 
+ 
Weave 
• Solves 
– Docker 
Networking 
– Container 
Placement 
– Applica)on 
Defini)on
Audience 
Ques)ons? 
1. Typical 
Docker 
use 
cases? 
2. What 
networking 
features 
would 
make 
these 
easier? 
3. What 
other 
features 
would 
be 
most 
useful 
to 
enhance 
Docker 
usability?
Thanks! 
Ques)ons?
Web 
Resources 
http://clocker.io/ 
http://brooklyn.io/ 
http://docker.io/ 
http://github.com/zettio/weave/ 
http://abstractvisitorpattern.co.uk/

Docker Networking with Clocker and Weave

  • 1.
    Docker Networking with Clocker and Weave Andrew Kennedy @grkvlt Edinburgh Docker Meetup, November 2014
  • 2.
    Introduc)on • Andrew Kennedy – So1ware Engineer – Open Source – github.com/grkvlt • Cloudso1 Corpora)on – Local (CodeBase) Company – We’re Hiring…
  • 3.
    Introduc)on • Moving Parts • Docker • Weave • Clocker • Brooklyn • Demonstra)on
  • 4.
    Clocker Project •What does it do? – Manages Docker Infrastructure – Deploys Blueprints to Docker • What is it? – Brooklyn Applica)on – Brooklyn Loca)on
  • 5.
    Docker • Popular – Huge Ecosystem – Growing – Complex • Containers – Isola)on – Performance – Composable
  • 6.
  • 7.
  • 8.
    Docker Limita)ons •Mul)ple Hosts • Networking – Same Issue – Communica)on Between Services • Orchestra)on and Clustering – Control of Containers – Container Management
  • 9.
    Docker Limita)ons •Plugin API will Help • Not standardized yet • Working on it… • Need to avoid lock-­‐in • One size fits all is never good enough
  • 10.
    Docker Networking •Separate Container Network • RFC 1918 Private Addresses • Non Routable • Bridged to Host • Port Forwarding • Mul)ple Endpoints for Services
  • 11.
  • 12.
    So1ware Defined Networking • Overlay Networks • Kernel or User Space • Many Op)ons – Pipework – SocketPlane – Flannel – Open vSwitch – Weave
  • 13.
    Weave • Ethernet Switch – User Space – Docker Container • Mesh Topology • Routes TCP Traffic – Sniffs on Host – Forwards over TCP
  • 14.
  • 15.
  • 16.
    Clocker Project •Open Source • GitHub • Apache 2.0 Licensed • Java • Recently Developed • S)ll Beta Status • 0.7.0-­‐SNAPSHOT
  • 17.
    Why Clocker •Docker Popularity – Solve Some Limita)ons • Best of Breed – Configura)on – Components • Brooklyn Integra)on – Container to En)ty Mapping
  • 18.
    Apache Brooklyn •Apache Brooklyn – Cloudso1 Product – Open Source Java – Donated to the ASF – Incubator Status
  • 19.
    Apache Brooklyn •Applica)on Management Placorm • Deploy, Manage and Monitor Blueprints • Provisioning, Installa)on and Customiza)on • Management • AutoScaling, Resilience, Performance, Access
  • 20.
    Apache Jclouds •Java Cloud Library • API Agnos)c – CloudStack, OpenStack, AWS EC2, GCE… • Create Virtual Machines – Return SSH Endpoint – Manage Proper)es
  • 21.
    Apache Jclouds •Drivers for REST APIs • Docker Driver – Wrifen by @turlinux • Virtual Container – Using SSH Daemon – Same Endpoint Type as VM – Composi)on on any Image or Dockerfile
  • 22.
    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
  • 23.
    Container Management •Sources – Docker Image Defini)on – Docker Hub – Dockerfile – Brooklyn En)ty Defini)on • Create Image Automa)cally – Commit or Push for Reuse
  • 24.
    Container Placement •Placement Strategies – Random, Depth or Breadth First – CPU or Memory Usage – Memory, CPU or Container Limits – Geographic Constraints • User Defined – Java Predicate
  • 25.
    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
  • 26.
    Networking • S)ll First Steps… • Name Resolu)on – BIND and DNSmasq – Needed for JMX et al • Enables Many More En))es • But Needs Tested!
  • 27.
  • 31.
    Roadmap • Networking – DNS and DNSmasq Integra)on – Rancher Integra)on – Open vSwictch Integra)on • Gelng Started – Clocker Dockerfile
  • 32.
    Roadmap • Repositories – Docker Repository – Bintray, Ar)factory, Quay.io – Private Repositories • Applica)on Defini)on – TOSCA
  • 33.
    Summary • Clocker – Brooklyn + Docker + Jclouds + Weave • Solves – Docker Networking – Container Placement – Applica)on Defini)on
  • 34.
    Audience Ques)ons? 1.Typical Docker use cases? 2. What networking features would make these easier? 3. What other features would be most useful to enhance Docker usability?
  • 35.
  • 36.
    Web Resources http://clocker.io/ http://brooklyn.io/ http://docker.io/ http://github.com/zettio/weave/ http://abstractvisitorpattern.co.uk/