docker 1.12 and swarmkit

31
Docker 1.12, SwarmKit and orchestration

Upload: gianluca-arbezzano

Post on 15-Jan-2017

216 views

Category:

Engineering


2 download

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!