Top Banner
Docker 1.12, SwarmKit and orchestration
31

Docker 1.12 and SwarmKit

Jan 15, 2017

Download

Engineering

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Docker 1.12 and SwarmKit

Docker 1.12, SwarmKit andorchestration

Page 2: Docker 1.12 and SwarmKit

I’m Gianluca

Software Engineer

Docker Captain

Open Source Developer

DevOps Evangelist

@gianarb

Page 3: Docker 1.12 and SwarmKit

/begin{adv}

Page 4: Docker 1.12 and SwarmKit

Drive your boat like a Captain

Docker in Productionhttp://scaledocker.com

Page 5: Docker 1.12 and SwarmKit

/end{adv}

Page 6: Docker 1.12 and SwarmKit

The evolution of Docker orchestration

docker run nginx

Swarm mode clustering + Docker Services in EngineON-TRACK

2013-14

2014-present

2016

(Backed by docker/swarmkit)

Page 7: Docker 1.12 and SwarmKit

Engine

Swarm Mode

$ docker swarm init

Page 8: Docker 1.12 and SwarmKit

Engine

Swarm Mode

$ docker swarm init

$ docker swarm join <IP of manager>:2377

Engine

Page 9: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine Engine

Swarm Mode

$ docker swarm init

$ docker swarm join <IP of manager>:2377

Page 10: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine Engine

Services

$ docker service create --replicas 3 --name frontend --network mynet

-p 8080:80 frontend:latest

mynet

Page 11: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine Engine

Services

$ docker service create --replicas 3 --name frontend --network mynet

-p 8080:80 frontend:latest

$ docker service create --name redis --network mynet redis:latest

mynet

Page 12: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine Engine

Node Failure & Reconciliation

$ docker service create --replicas 3 --name frontend --network mynet

-p 8080:80 frontend:latest

$ docker service create --name redis --network mynet redis:latest

mynet

Page 13: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine Engine

Node Failure & Reconciliation

$ docker service create --replicas 3 --name frontend --network mynet

-p 8080:80 frontend:latest

$ docker service create --name redis --network mynet redis:latest

mynet

Page 14: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine

Desired State ≠ Actual State

$ docker service create --replicas 3 --name frontend --network mynet

-p 8080:80 frontend:latest

$ docker service create --name redis --network mynet redis:latest

mynet

Page 15: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine

Converge Back to Desired State

$ docker service create --replicas 3 --name frontend --network mynet

-p 8080:80 frontend:latest

$ docker service create --name redis --network mynet redis:latest

mynet

Page 16: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine

Scaling

$ docker service update --replicas 6 frontend

mynet

Page 17: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine

Scaling

$ docker service update --replicas 10 frontend

mynet

Page 18: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine

Global Services

$ docker service create --mode=global --name prometheus prom/prometheus

mynet

Page 19: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine

Constraints

Engine

docker daemon --label com.example.storage="ssd"

docker daemon --label com.example.storage="ssd"

Page 20: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine

Constraints

$ docker service create --replicas 3 --name frontend --network mynet -p 8080:80 --constraint engine.labels.com.example.storage==ssd frontend:latest

Engine

docker daemon --label com.example.storage="ssd"

docker daemon --label com.example.storage="ssd"

Page 21: Docker 1.12 and SwarmKit

Engine

Engine

Engine

Engine

Engine

Constraints

$ docker service create --replicas 3 --name frontend --network mynet -p 8080:80 --constraint engine.labels.com.example.storage==ssd frontend:latest

$ docker service update --replicas 10 frontend

Engine

docker daemon --label com.example.storage="ssd"

docker daemon --label com.example.storage="ssd"

Page 22: Docker 1.12 and SwarmKit

Routing Mesh

:8080 :8080 :8080

frontend frontend

$ docker service create --replicas 3 --name frontend --network mynet

-p 8080:80 frontend:latest

frontend

Load Balancer

:8080

User browses to http://myapp.com

Node 1 Node 2 Node 3 Node 4

Page 23: Docker 1.12 and SwarmKit

Routing Mesh

:8080

User browses to http://myapp.com

:8080 :8080

frontend frontend

$ docker service create --replicas 3 --name frontend --network mynet

-p 8080:80 frontend:latest

frontend

External Load Balancer

:8080

Node 1 Node 2 Node 3 Node 4

Page 24: Docker 1.12 and SwarmKit

Secure by default• Out-of-the-box TLS

encryption and mutual auth

• Automatic cert rotation• External or self-signed

root CA• Cryptographic node

identity

CertificateAuthority

TLS

CertificateAuthority

TLS

CertificateAuthority

TLS

TLS TLSTLS

Page 25: Docker 1.12 and SwarmKit

Topology: High Availability

Manager Manager Manager

Worker Worker Worker Worker Worker Worker

Leader FollowerFollower

Loss of Leader

Page 26: Docker 1.12 and SwarmKit

Topology: High Availability

Manager Manager Manager

Worker Worker Worker Worker Worker Worker

Leader FollowerFollower

Loss of Leader

Page 27: Docker 1.12 and SwarmKit

Topology: High Availability

Manager Manager Manager

Worker Worker Worker Worker Worker Worker

Follower FollowerLeader

Page 28: Docker 1.12 and SwarmKit

Topology: High Availability

Manager Manager Manager

Worker Worker Worker Worker Worker Worker

Follower FollowerLeader

Page 29: Docker 1.12 and SwarmKit

Demo

Page 30: Docker 1.12 and SwarmKit

It’s time to think about Docker 1.13

• Secret Manager built-in (#27794)• Docker system command (#26108)• Allows a new client to talk to an old

engine• Improved new plugins system• Docker Stats and Promethus (#25820)

Page 31: Docker 1.12 and SwarmKit

Credits

• Thanks Docker Inc. part of the slides are provided directly by them.• http://gianarb.it/planet/docker.html• https://scaledocker.com• https://github.com/docker/swarmkit• https://www.youtube.com/watch?v=h7a7vhzjElo• http://argh.gianarb.it/

Thanks!