docker swarm 0.2.0

33
Introduction to Swarm a Docker-native clustering system @aluzzardi - @vieux - @abronan

Upload: docker-inc

Post on 16-Jul-2015

3.391 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Docker Swarm 0.2.0

Introduction to Swarma Docker-native clustering system

@aluzzardi - @vieux - @abronan

Page 2: Docker Swarm 0.2.0

Alexandre Beslic@abronan

Page 3: Docker Swarm 0.2.0

Introduction

Demo

Upcoming features

Q&A

Page 4: Docker Swarm 0.2.0

Today

Docker CLI

Docker CLI

Docker CLI

Page 5: Docker Swarm 0.2.0

With Docker Swarm

Docker CLI

Docker CLI

Swarm

Page 6: Docker Swarm 0.2.0

Swarm in a nutshell

• Exposes several Docker Engines as a single virtual Engine

• Serves the standard Docker API

• Extremely easy to get started

• Batteries included but swappable

Page 7: Docker Swarm 0.2.0

TimelineOct

Nov

Dec

Jan

Feb

Jun

Proof of Concept

DockerCon EU Open Repository

First Release Candidate

Swarm Beta Release

Global Hack Day Open Proposal

0.2.0 Release

0.3.0 Release

Apr

Page 8: Docker Swarm 0.2.0

Swarm 0.2.0

• Docker REST API (>85%)

• Resource management (CPU, Mem, Networking)

• Advanced scheduling with constraints and affinities

• Multiple Discovery Backends (hub, etcd, consul, zookeeper)

• TLS: Encryption & Authentication

Page 9: Docker Swarm 0.2.0

Setup using the hosted discovery service

• Create a cluster:

$ swarm create

• Add nodes to a cluster:

$ swarm join --add=<node_ip> token://<token>

• Start Swarm

$ swarm manage --addr=<swarm_ip> token://<token>

Or you can use your own etcd, zookeeper or consul

Contributions are welcome ☺ :

Page 10: Docker Swarm 0.2.0

Swarm Scheduler

2 steps:

• 1- Apply filters to exclude nodes

- ports

- constraints - affinity

- health - dependency

• 2- Use a strategy to pick the best node

- binpack

- spread

- random Contributions are welcome ☺ :

Page 11: Docker Swarm 0.2.0

Resource Management

• Memory

$ docker run -m 1g …

• CPU

$ docker run -c 1 …

• Ports

$ docker run -p 80:80 …

• More to come, ex: network interfaces

Page 12: Docker Swarm 0.2.0

Constraints

• Standard constraints induced from docker info

docker run -e “constraint:operatingsystem==*fedora*” …

docker run -e “constraint:storagedriver==*aufs*” …

• Custom constraints with host labels

docker -d --label “region==us-east”

docker run -e “constraint:region==us-east” …

• Pin a container to a specific host

docker run –e “constraint:node==ubuntu-2” …

Page 13: Docker Swarm 0.2.0

Affinities

• Containers affinities

docker run --name web nginx

docker run -e “affinity:container==web” logger

• Containers Anti-affinities

docker run --name redis-master redis

docker run --name redis-slave -e “affinity:container!=redis*” …

• Images affinities

docker run -e “affinity:image==redis” redis

Page 14: Docker Swarm 0.2.0

Soft Affinities

• Containers soft affinities

docker run -d --name redis5 -e affinity:container!=~redis* redis

Page 15: Docker Swarm 0.2.0

Swarm Beta: Integrations

• Fully integrated with Machine$ machine create -d azure --swarm --swarm-discovery token://<token> …

• Partially integrated with Compose$ DOCKER_HOST=<swarm_addr> compose up

• Mesos & DCOS integration has started in collaboration with Mesosphere. $ swarm manage -c mesos zk://<zookeeper_addr>/swarm

Page 16: Docker Swarm 0.2.0

DemoScheduling containers on Swarm

Page 17: Docker Swarm 0.2.0

Demo

hdd ssd

Docker CLI

Docker CLI= RAM: 4GB

CPU: 1coreSwarm

us-east us-west

Page 18: Docker Swarm 0.2.0

Swarm Beta: Upcoming features

• Support for K/V backends (consul, etcd, zookeeper)

• High Availability with replicated state between multiple Managers

• Attempt at Re-scheduling on Node failure

• Networking (libnetwork integration into docker)

Page 19: Docker Swarm 0.2.0

On-failure rescheduling

Page 20: Docker Swarm 0.2.0

On-failure rescheduling

Docker CLI

Docker CLI

Swarm

Node Failure

Page 21: Docker Swarm 0.2.0

On-failure rescheduling

Docker CLI

Docker CLI

Swarm

Node Failure

Page 22: Docker Swarm 0.2.0

High Availability, State replication

Page 23: Docker Swarm 0.2.0

Docker CLI

Docker CLI

Swarm

Page 24: Docker Swarm 0.2.0

Docker CLI

Swarm

Node Failure

Page 25: Docker Swarm 0.2.0

Docker CLI

Docker CLI

Swarm

Node Failure

Page 26: Docker Swarm 0.2.0

Manager backup instances

Docker CLI

ManagerBackupBackup

Page 27: Docker Swarm 0.2.0

Manager backup instances

Docker CLI

ManagerBackupBackup

Failure

Page 28: Docker Swarm 0.2.0

Manager backup instances

Docker CLI

ManagerBackup Manager

Failure Swap

Page 29: Docker Swarm 0.2.0

Mesos Integration

Page 30: Docker Swarm 0.2.0

Mesos cluster

+ + +

Mesos CLI

Marathon

Page 31: Docker Swarm 0.2.0

Mesos cluster + Docker Swarm

+ + +

Docker CLI

Mesos CLI

Marathon

Page 32: Docker Swarm 0.2.0

Mesos cluster + Docker Swarm

+ + +

Docker CLI

Mesos CLI

DockerCompose

Marathon

Page 33: Docker Swarm 0.2.0

http://github.com/docker/swarm

#docker-swarm on freenode

@aluzzardi - @vieux - @abronan

Thank You. Questions?