SlideShare a Scribd company logo
1 of 49
Download to read offline
Docker Swarm
Introduction
Evan Lin @Linker Networks
About Me
● Cloud Architect @ Linker
Networks
● Top 10 Taiwan Golang open
source contributor (github
award)
● Developer, Curator, Blogger
Agenda
● Docker Swarm
● Docker SwarmKit
● Introduction Docker Swarm Mode (Swarm
V2)
● Docker Swarm Mode Features
● Docker Swarm Mode Tutorial
● Q&A
Original Docker
Management multiple docker between
machines
Let’s use Docker Swarm (Tranditional)
Let’s use Docker Swarm (Tranditional)
Architecture
Let’s use Docker Swarm (Tranditional)
Steps
Setup Docker Swarm
● Startup a K/V value server (Consul) keystore
● Create a swarm manager
● Connect swarm manager to the keystore
● Create multiple swarm workers
● Connect swarm worker to keystore
● Swarm worker join to swarm manager
Load balancer ?
● Create a load balancer ...
Step 1:
Startup Keystore
● Create A docker-Machine
○ docker-machine create -d virtualbox
--virtualbox-memory "2000"
--engine-opt="label=com.function=consul"
keystore
● Sync to keystore machine
○ eval $(docker-machine env keystore)
● Run “consul” a K/V server container
○ docker run --restart=unless-stopped -d -p
8500:8500 -h consul progrium/consul
-server -bootstrap
Step 2:
Startup Swarm Manager
● Create docker-machine for swarm manager
○ docker-machine create -d virtualbox
--virtualbox-memory "2000"
--engine-opt="label=com.function=manage
r"
--engine-opt="cluster-store=consul://$(doc
ker-machine ip keystore):8500"
--engine-opt="cluster-advertise=eth1:2376"
manager
● Sync to swarm manager machine
○ eval $(docker-machine env manager)
Step 2:
Startup Swarm Manager
● Start docker swarm
container
○ docker run --restart=unless-stopped -d -p 3376:2375 -v
/var/lib/boot2docker:/certs:ro swarm manage --tlsverify
--tlscacert=/certs/ca.pem --tlscert=/certs/server.pem
--tlskey=/certs/server-key.pem consul://$(docker-machine ip
keystore):8500
Step 3~6:
Startup Swarm Manager
● Start docker swarm worker
○ docker-machine create -d virtualbox --virtualbox-memory "2000"
--engine-opt="label=com.function=frontend01"
--engine-opt="cluster-store=consul://$(docker-machine ip
keystore):8500" --engine-opt="cluster-advertise=eth1:2376"
frontend01
● Sync to fronted01
○ eval $(docker-machine env frontend01)
● Join to Swarm Manager
○ docker run -d swarm join --addr=$(docker-machine ip
frontend01):2376 consul://$(docker-machine ip keystore):8500
Step 7:
Startup Load Balancer
● Start docker swarm worker
○ docker-machine create -d virtualbox --virtualbox-memory "2000"
--engine-opt="label=com.function=interlock" loadbalancer
● Download “Interlock” and setup
○ git clone https://github.com/ehazlett/interlock.git
○ cd config
○ Fill with `config.toml` ...
● Run Load Balancer “Interlock”
○ docker run -P -d -ti -v nginx:/etc/conf -v
/var/lib/boot2docker:/var/lib/boot2docker:ro -v
/var/run/docker.sock:/var/run/docker.sock -v
$(pwd)/config.toml:/etc/config.toml --name interlock
ehazlett/interlock:1.0.1 -D run -c /etc/config.toml
I can do this “ALL DAY”
SwarmKit
Different with Docker Swarm
● Where is “Consul” ?
○ The K/V DB already built-in in
Swarm Kit
● More security communication.
○ It default support TLS
● What is Raft Consensus ?
○ For data consistentcy and election
node if master is down.
SwarmKit
Master
● Build SwarmKit binaries
○ git clone
https://github.com/docker/swarmkit.git
○ cd swarmkit
○ make setup
○ make all
● Run Swarm manager
○ swarmd -d /tmp/node-1
--listen-control-api
/tmp/manager1/swarm.sock
--hostname node-1
SwarmKit
Master
● Sync swarm socket
○ export
SWARM_SOCKET=/tmp/manager1/
swarm.sock
● Check Swarm master
○ swarmctl cluster inspect default
SwarmKit
Agent
● Run Swarm Agent (worker)
○ swarmd -d /tmp/node-2 --hostname node-2
--join-addr 127.0.0.1:4242 --join-token
SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1
wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz
○ swarmd -d /tmp/node-3 --hostname node-3
--join-addr 127.0.0.1:4242 --join-token
SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1
wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz
● Check node status
○ swarmctl node ls
Complete SwarmKit setup
SwarmKit
Create A Service
● Create a Swarm Kit service
○ swarmctl service create --name redis
--image redis:3.0.5
● Make sure service status
○ swarmctl node ls
SwarmKit
Create A Service
● Create a Swarm Kit service
○ swarmctl service create --name redis
--image redis:3.0.5
● Make sure service status
○ swarmctl service ls
● Check detail of service
○ swarmctl service inspect redis
SwarmKit
Scale Your Service
● Scale Swarm Kit service
○ swarmctl service update redis
--replicas 6
● Make sure service status
○ swarmctl service ls
○ swarmctl service ls
SwarmKit
Scale Your Service
● Inspect service detail
○ swarmctl service inspect redis
SwarmKit
Update Service
● Update service directly
○ swarmctl service update redis
--image redis:3.0.6
SwarmKit
Rolling Update
● Update two services every 10 seconds
○ swarmctl service update redis
--image redis:3.0.7
--update-parallelism 2
--update-delay 10s
SwarmKit
Drain Node
● Stop node 1
○ swarmctl node drain node-1
● Docker Swarm Mode ( Swarm
version 2)
● New feature from Docker Engine
1.12
● Powerful and more security
Docker Swarm Mode
Different between
Docker Swarm, SwarmKit and Swarm V2
Docker Swarm SwarmKit Swarm Mode (v2)
Docker Version All All >= 1.12
K/V DB Need extra one Built-In Built-In
Extra Binaries No
Yes
(Use Go 1.6)
No
Security None Built-In Built-In
Extra Service None None
Routing Mesh
Load Balance
Support Docker
Compose,
Docker-Machine
Yes Yes
No
(for now)
Docker Swarm Mode Tutorial - Vote App
Docker Swarm Mode:
● Create three docker machine
○ docker-machine create --driver
virtualbox v1
○ docker-machine create --driver
virtualbox v2
○ docker-machine create --driver
virtualbox v3
V1
192.168.99.100
V2
192.168.99.101
V3
192.168.99.102
Docker Swarm Mode:
● Connect to V1 node
○ docker-machine ssh v1
○ ifconfig
● Init docker swarm manager
○ docker swarm init --listen-addr
192.168.99.100:2377
--advertise-addr 192.168.99.100
V1
192.168.99.100
V2
192.168.99.101
V3
192.168.99.102
Docker Swarm Mode:
● Connect to V2, V3 node
○ docker-machine ssh v2
○ docker-machine ssh v3
● Init docker swarm worker
○ docker swarm join --token
SWMTKN-1-62q9gzw8uc43fbv7n79
h7lsnmc6j2tqpzb4qy2osurxufxz87u-
97v5wplu0dvit5ssveo5da2h6
192.168.99.100:2377
V1
(Manager)
192.168.99.100
V2
(Worker)
192.168.99.101
V3
(Worker)
192.168.99.102
Docker Swarm Mode:
● Check current node status
○ docker-machine ssh v1
○ docker node ls
V1
(Manager)
192.168.99.100
V2
(Worker)
192.168.99.101
V3
(Worker)
192.168.99.102
Docker Swarm Mode: All setup is
done
Docker Swarm Mode:
● Connect to Swarm Manager create
service “vote”
○ docker-machine ssh v1
○ docker service create --name vote -p
8080:80 instavote/vote
● Check detail of this service
○ docker service ls
● Check which node run this service
○ docker service ps vote
V1
(Manager)
192.168.99.100
V2
(Worker)
192.168.99.101
V3
(Worker)
192.168.99.102
instavote/
vote
Docker Swarm Mode:
● Scale “vote” service to 3
○ docker service scale vote=2
● Check detail of this service
○ docker service ls
● Check which node run this service
○ docker service ps vote
V1
(Manager)
192.168.99.100
V2
(Worker)
192.168.99.101
V3
(Worker)
192.168.99.102
instavote/
vote
instavote/
vote
Random
Load Balacncer
V1
(Manager)
192.168.99.100
V2
(Worker)
192.168.99.101
V3
(Worker)
192.168.99.102
instavote/
vote
instavote/
vote
Client
LB
Docker Swarm Mode:
● Scale “vote” service from 2 to 3
○ docker service scale vote=3
● Check detail of this service
○ docker service ls
● Check which node run this service
○ docker service ps vote
V1
(Manager)
192.168.99.100
V2
(Worker)
192.168.99.101
V3
(Worker)
192.168.99.102
instavote/
vote
instavote/
vote
instavote/
vote
Docker Swarm Mode:
● Service update (Immediately)
○ docker service update --image
instavote/vote:movies vote
● Check detail of this service
○ docker service ls
● Check which node run this service
○ docker service ps vote
V1
(Manager)
192.168.99.100
V2
(Worker)
192.168.99.101
V3
(Worker)
192.168.99.102
instavote/
vote:
movies
instavote/
vote:
movies
instavote/
vote:
movies
Docker Swarm Mode:
● Service update (Rolling Update)
○ docker service update vote --image
instavote/vote:indent
--update-parallelism 1
--update-delay 10s
● Check detail of this service
○ docker service ls
● Check which node run this service
○ docker service ps vote
V1
(Manager)
192.168.99.100
V2
(Worker)
192.168.99.101
V3
(Worker)
192.168.99.102
instavote/
vote:
indent
instavote/
vote:
indent
instavote/
vote:
indent
Docker Swarm Mode:
● Global Services
○ docker service create --mode=global --name prometheus
prom/prometheus
● Check detail of this service
○ docker service ls
● Check which node run this service
○ docker service ps prometheus
V1
(Manager)
192.168.99.100
V2
(Worker)
192.168.99.101
V3
(Worker)
192.168.99.102
instavote/
vote:
indent
instavote/
vote:
indent
instavote/
vote:
indent
prometheus
prometheus
prometheus
Different between Docker Swarm, SwarmKit
and Swarm V2
Docker Swarm SwarmKit Swarm Mode (v2)
Docker Version All All >= 1.12
K/V DB Need extra one Built-In Built-In
Extra Binaries No
Yes
(Use Go 1.6)
No
Security None Built-In Built-In
Extra Service None None
Routing Mesh
Load Balance
Support Docker
Compose,
Docker-Machine
Yes Yes
No
(for now)
Q&A

More Related Content

What's hot

Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerInstruqt
 
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...Edureka!
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a DockerfileKnoldus Inc.
 
Docker introduction
Docker introductionDocker introduction
Docker introductionPhuc Nguyen
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...Simplilearn
 
Docker introduction (1)
Docker introduction (1)Docker introduction (1)
Docker introduction (1)Gourav Varma
 
Docker Swarm Introduction
Docker Swarm IntroductionDocker Swarm Introduction
Docker Swarm Introductionrajdeep
 
Docker introduction
Docker introductionDocker introduction
Docker introductiondotCloud
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker ComposeAjeet Singh Raina
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetesDongwon Kim
 
What is Docker Architecture | Edureka
What is Docker Architecture | EdurekaWhat is Docker Architecture | Edureka
What is Docker Architecture | EdurekaEdureka!
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking OverviewSreenivas Makam
 

What's hot (20)

Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a Dockerfile
 
Docker
DockerDocker
Docker
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
 
Docker swarm
Docker swarmDocker swarm
Docker swarm
 
Docker introduction (1)
Docker introduction (1)Docker introduction (1)
Docker introduction (1)
 
Docker Swarm Introduction
Docker Swarm IntroductionDocker Swarm Introduction
Docker Swarm Introduction
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker Compose
 
Docker
DockerDocker
Docker
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Docker Tutorial.pdf
Docker Tutorial.pdfDocker Tutorial.pdf
Docker Tutorial.pdf
 
Docker basics
Docker basicsDocker basics
Docker basics
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetes
 
What is Docker Architecture | Edureka
What is Docker Architecture | EdurekaWhat is Docker Architecture | Edureka
What is Docker Architecture | Edureka
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking Overview
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 

Viewers also liked

Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Evan Lin
 
Advanced ETL2 Pentaho
Advanced ETL2  Pentaho Advanced ETL2  Pentaho
Advanced ETL2 Pentaho Sunny U Okoro
 
Elementos ETL - Kettle Pentaho
Elementos ETL - Kettle Pentaho Elementos ETL - Kettle Pentaho
Elementos ETL - Kettle Pentaho valex_haro
 
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) ItalyClustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) ItalyGiovanni Toraldo
 
Scaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and KubernetesScaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and KubernetesCarlos Sanchez
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemMario IC
 
Pentaho | Data Integration & Report designer
Pentaho | Data Integration & Report designerPentaho | Data Integration & Report designer
Pentaho | Data Integration & Report designerHamdi Hmidi
 
Migración de datos con OpenERP-Kettle
Migración de datos con OpenERP-KettleMigración de datos con OpenERP-Kettle
Migración de datos con OpenERP-Kettleraimonesteve
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryMario IC
 
Introduction to docker swarm
Introduction to docker swarmIntroduction to docker swarm
Introduction to docker swarmWalid Ashraf
 
Docker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - ComposeDocker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - ComposeMario IC
 
NGINX Plus PLATFORM For Flawless Application Delivery
NGINX Plus PLATFORM For Flawless Application DeliveryNGINX Plus PLATFORM For Flawless Application Delivery
NGINX Plus PLATFORM For Flawless Application DeliveryAshnikbiz
 
Building Data Integration and Transformations using Pentaho
Building Data Integration and Transformations using PentahoBuilding Data Integration and Transformations using Pentaho
Building Data Integration and Transformations using PentahoAshnikbiz
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Puppet
 
Business Intelligence and Big Data Analytics with Pentaho
Business Intelligence and Big Data Analytics with Pentaho Business Intelligence and Big Data Analytics with Pentaho
Business Intelligence and Big Data Analytics with Pentaho Uday Kothari
 
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Carlos Sanchez
 
Indic threads pune12-accelerating computation in html 5
Indic threads pune12-accelerating computation in html 5Indic threads pune12-accelerating computation in html 5
Indic threads pune12-accelerating computation in html 5IndicThreads
 
Building a data warehouse with Pentaho and Docker
Building a data warehouse with Pentaho and DockerBuilding a data warehouse with Pentaho and Docker
Building a data warehouse with Pentaho and DockerWellington Marinho
 

Viewers also liked (20)

Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot
 
Advanced ETL2 Pentaho
Advanced ETL2  Pentaho Advanced ETL2  Pentaho
Advanced ETL2 Pentaho
 
Elementos ETL - Kettle Pentaho
Elementos ETL - Kettle Pentaho Elementos ETL - Kettle Pentaho
Elementos ETL - Kettle Pentaho
 
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) ItalyClustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
 
Scaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and KubernetesScaling Jenkins with Docker and Kubernetes
Scaling Jenkins with Docker and Kubernetes
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
 
Pentaho | Data Integration & Report designer
Pentaho | Data Integration & Report designerPentaho | Data Integration & Report designer
Pentaho | Data Integration & Report designer
 
Tao zhang
Tao zhangTao zhang
Tao zhang
 
Migración de datos con OpenERP-Kettle
Migración de datos con OpenERP-KettleMigración de datos con OpenERP-Kettle
Migración de datos con OpenERP-Kettle
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
 
Introduction to docker swarm
Introduction to docker swarmIntroduction to docker swarm
Introduction to docker swarm
 
Docker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - ComposeDocker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - Compose
 
NGINX Plus PLATFORM For Flawless Application Delivery
NGINX Plus PLATFORM For Flawless Application DeliveryNGINX Plus PLATFORM For Flawless Application Delivery
NGINX Plus PLATFORM For Flawless Application Delivery
 
Building Data Integration and Transformations using Pentaho
Building Data Integration and Transformations using PentahoBuilding Data Integration and Transformations using Pentaho
Building Data Integration and Transformations using Pentaho
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
 
Business Intelligence and Big Data Analytics with Pentaho
Business Intelligence and Big Data Analytics with Pentaho Business Intelligence and Big Data Analytics with Pentaho
Business Intelligence and Big Data Analytics with Pentaho
 
Introduction to GPU Programming
Introduction to GPU ProgrammingIntroduction to GPU Programming
Introduction to GPU Programming
 
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?
 
Indic threads pune12-accelerating computation in html 5
Indic threads pune12-accelerating computation in html 5Indic threads pune12-accelerating computation in html 5
Indic threads pune12-accelerating computation in html 5
 
Building a data warehouse with Pentaho and Docker
Building a data warehouse with Pentaho and DockerBuilding a data warehouse with Pentaho and Docker
Building a data warehouse with Pentaho and Docker
 

Similar to Docker swarm introduction

Swarm: Native Docker Clustering
Swarm: Native Docker ClusteringSwarm: Native Docker Clustering
Swarm: Native Docker ClusteringRoyee Tager
 
Clustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSEClustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSESaputro Aryulianto
 
OSDC 2019 | Evolution of a Microservice-Infrastructure by Jan Martens
OSDC 2019 | Evolution of a Microservice-Infrastructure by Jan MartensOSDC 2019 | Evolution of a Microservice-Infrastructure by Jan Martens
OSDC 2019 | Evolution of a Microservice-Infrastructure by Jan MartensNETWAYS
 
Docker HK Meetup - 201707
Docker HK Meetup - 201707Docker HK Meetup - 201707
Docker HK Meetup - 201707Clarence Ho
 
Docker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-templateDocker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-templateJulien Maitrehenry
 
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16 What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16 Docker, Inc.
 
What’s new in Swarm 1.1
What’s new in Swarm 1.1What’s new in Swarm 1.1
What’s new in Swarm 1.1k z
 
Docker 進階實務班
Docker 進階實務班Docker 進階實務班
Docker 進階實務班Philip Zheng
 
廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班Paul Chao
 
Introduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxDataIntroduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxDataInfluxData
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouJ On The Beach
 
Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020CloudHero
 
DockerCon EU '17 - Dockerizing Aurea
DockerCon EU '17 - Dockerizing AureaDockerCon EU '17 - Dockerizing Aurea
DockerCon EU '17 - Dockerizing AureaŁukasz Piątkowski
 
Perspectives on Docker
Perspectives on DockerPerspectives on Docker
Perspectives on DockerRightScale
 
Making kubernetes simple for developers
Making kubernetes simple for developersMaking kubernetes simple for developers
Making kubernetes simple for developersSuraj Deshmukh
 
Building Bizweb Microservices with Docker
Building Bizweb Microservices with DockerBuilding Bizweb Microservices with Docker
Building Bizweb Microservices with DockerKhôi Nguyễn Minh
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDocker, Inc.
 

Similar to Docker swarm introduction (20)

Swarm: Native Docker Clustering
Swarm: Native Docker ClusteringSwarm: Native Docker Clustering
Swarm: Native Docker Clustering
 
Docker-machine
Docker-machineDocker-machine
Docker-machine
 
Docker 1.12 and swarm mode
Docker 1.12 and swarm modeDocker 1.12 and swarm mode
Docker 1.12 and swarm mode
 
Clustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSEClustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSE
 
OSDC 2019 | Evolution of a Microservice-Infrastructure by Jan Martens
OSDC 2019 | Evolution of a Microservice-Infrastructure by Jan MartensOSDC 2019 | Evolution of a Microservice-Infrastructure by Jan Martens
OSDC 2019 | Evolution of a Microservice-Infrastructure by Jan Martens
 
Docker HK Meetup - 201707
Docker HK Meetup - 201707Docker HK Meetup - 201707
Docker HK Meetup - 201707
 
Docker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-templateDocker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-template
 
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16 What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16
 
What’s new in Swarm 1.1
What’s new in Swarm 1.1What’s new in Swarm 1.1
What’s new in Swarm 1.1
 
Docker 進階實務班
Docker 進階實務班Docker 進階實務班
Docker 進階實務班
 
廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班
 
Swarm mode
Swarm modeSwarm mode
Swarm mode
 
Introduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxDataIntroduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxData
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camou
 
Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020
 
DockerCon EU '17 - Dockerizing Aurea
DockerCon EU '17 - Dockerizing AureaDockerCon EU '17 - Dockerizing Aurea
DockerCon EU '17 - Dockerizing Aurea
 
Perspectives on Docker
Perspectives on DockerPerspectives on Docker
Perspectives on Docker
 
Making kubernetes simple for developers
Making kubernetes simple for developersMaking kubernetes simple for developers
Making kubernetes simple for developers
 
Building Bizweb Microservices with Docker
Building Bizweb Microservices with DockerBuilding Bizweb Microservices with Docker
Building Bizweb Microservices with Docker
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
 

More from Evan Lin

好書分享: 一人公司 Company Of One
好書分享:  一人公司  Company Of One好書分享:  一人公司  Company Of One
好書分享: 一人公司 Company Of OneEvan Lin
 
How to master a programming language: a Golang example"
How to master a programming language: a Golang example"How to master a programming language: a Golang example"
How to master a programming language: a Golang example"Evan Lin
 
Golang taipei #45 10th birthday
Golang taipei #45 10th birthdayGolang taipei #45 10th birthday
Golang taipei #45 10th birthdayEvan Lin
 
How I become Go GDE
How I become Go GDEHow I become Go GDE
How I become Go GDEEvan Lin
 
iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台Evan Lin
 
Kubernetes secret introduction
Kubernetes secret introductionKubernetes secret introduction
Kubernetes secret introductionEvan Lin
 
Consistent hashing algorithmic tradeoffs
Consistent hashing  algorithmic tradeoffsConsistent hashing  algorithmic tradeoffs
Consistent hashing algorithmic tradeoffsEvan Lin
 
GTG30: Introduction vgo
GTG30: Introduction vgoGTG30: Introduction vgo
GTG30: Introduction vgoEvan Lin
 
Kubernetes v.s. mesos
Kubernetes v.s. mesosKubernetes v.s. mesos
Kubernetes v.s. mesosEvan Lin
 
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples)
iTHome Gopher Day 2017: What can Golang do?  (Using project 52 as examples)iTHome Gopher Day 2017: What can Golang do?  (Using project 52 as examples)
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples)Evan Lin
 
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...Evan Lin
 
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人Evan Lin
 
Google APAC Machine Learning Expert Day
Google APAC Machine Learning Expert DayGoogle APAC Machine Learning Expert Day
Google APAC Machine Learning Expert DayEvan Lin
 
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line BotEvan Lin
 
Use go channel to write a disk queue
Use go channel to write a disk queueUse go channel to write a disk queue
Use go channel to write a disk queueEvan Lin
 
Gopher Taiwan Gathering #16: Build a smart bot via Golang
Gopher Taiwan Gathering #16:  Build a smart bot via GolangGopher Taiwan Gathering #16:  Build a smart bot via Golang
Gopher Taiwan Gathering #16: Build a smart bot via GolangEvan Lin
 
COSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 GolangCOSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 GolangEvan Lin
 
Docker introduction in Hardware Company
Docker introduction in Hardware CompanyDocker introduction in Hardware Company
Docker introduction in Hardware CompanyEvan Lin
 
Host Line Bot with Golang
Host Line Bot with GolangHost Line Bot with Golang
Host Line Bot with GolangEvan Lin
 

More from Evan Lin (20)

好書分享: 一人公司 Company Of One
好書分享:  一人公司  Company Of One好書分享:  一人公司  Company Of One
好書分享: 一人公司 Company Of One
 
How to master a programming language: a Golang example"
How to master a programming language: a Golang example"How to master a programming language: a Golang example"
How to master a programming language: a Golang example"
 
Golang taipei #45 10th birthday
Golang taipei #45 10th birthdayGolang taipei #45 10th birthday
Golang taipei #45 10th birthday
 
How I become Go GDE
How I become Go GDEHow I become Go GDE
How I become Go GDE
 
iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台
 
Kubernetes secret introduction
Kubernetes secret introductionKubernetes secret introduction
Kubernetes secret introduction
 
Consistent hashing algorithmic tradeoffs
Consistent hashing  algorithmic tradeoffsConsistent hashing  algorithmic tradeoffs
Consistent hashing algorithmic tradeoffs
 
GTG30: Introduction vgo
GTG30: Introduction vgoGTG30: Introduction vgo
GTG30: Introduction vgo
 
Kubernetes v.s. mesos
Kubernetes v.s. mesosKubernetes v.s. mesos
Kubernetes v.s. mesos
 
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples)
iTHome Gopher Day 2017: What can Golang do?  (Using project 52 as examples)iTHome Gopher Day 2017: What can Golang do?  (Using project 52 as examples)
iTHome Gopher Day 2017: What can Golang do? (Using project 52 as examples)
 
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
iThome Cloud Summit: The next generation of data center: Machine Intelligent ...
 
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
iThome Chatbot Day: 透過 Golang 無痛建置機器學習聊天機器人
 
Google APAC Machine Learning Expert Day
Google APAC Machine Learning Expert DayGoogle APAC Machine Learning Expert Day
Google APAC Machine Learning Expert Day
 
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
 
Use go channel to write a disk queue
Use go channel to write a disk queueUse go channel to write a disk queue
Use go channel to write a disk queue
 
Gopher Taiwan Gathering #16: Build a smart bot via Golang
Gopher Taiwan Gathering #16:  Build a smart bot via GolangGopher Taiwan Gathering #16:  Build a smart bot via Golang
Gopher Taiwan Gathering #16: Build a smart bot via Golang
 
COSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 GolangCOSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 Golang
 
Docker introduction in Hardware Company
Docker introduction in Hardware CompanyDocker introduction in Hardware Company
Docker introduction in Hardware Company
 
Host Line Bot with Golang
Host Line Bot with GolangHost Line Bot with Golang
Host Line Bot with Golang
 
Project52
Project52Project52
Project52
 

Docker swarm introduction

  • 2. About Me ● Cloud Architect @ Linker Networks ● Top 10 Taiwan Golang open source contributor (github award) ● Developer, Curator, Blogger
  • 3. Agenda ● Docker Swarm ● Docker SwarmKit ● Introduction Docker Swarm Mode (Swarm V2) ● Docker Swarm Mode Features ● Docker Swarm Mode Tutorial ● Q&A
  • 5. Management multiple docker between machines
  • 6. Let’s use Docker Swarm (Tranditional)
  • 7. Let’s use Docker Swarm (Tranditional) Architecture
  • 8. Let’s use Docker Swarm (Tranditional) Steps Setup Docker Swarm ● Startup a K/V value server (Consul) keystore ● Create a swarm manager ● Connect swarm manager to the keystore ● Create multiple swarm workers ● Connect swarm worker to keystore ● Swarm worker join to swarm manager Load balancer ? ● Create a load balancer ...
  • 9. Step 1: Startup Keystore ● Create A docker-Machine ○ docker-machine create -d virtualbox --virtualbox-memory "2000" --engine-opt="label=com.function=consul" keystore ● Sync to keystore machine ○ eval $(docker-machine env keystore) ● Run “consul” a K/V server container ○ docker run --restart=unless-stopped -d -p 8500:8500 -h consul progrium/consul -server -bootstrap
  • 10. Step 2: Startup Swarm Manager ● Create docker-machine for swarm manager ○ docker-machine create -d virtualbox --virtualbox-memory "2000" --engine-opt="label=com.function=manage r" --engine-opt="cluster-store=consul://$(doc ker-machine ip keystore):8500" --engine-opt="cluster-advertise=eth1:2376" manager ● Sync to swarm manager machine ○ eval $(docker-machine env manager)
  • 11. Step 2: Startup Swarm Manager ● Start docker swarm container ○ docker run --restart=unless-stopped -d -p 3376:2375 -v /var/lib/boot2docker:/certs:ro swarm manage --tlsverify --tlscacert=/certs/ca.pem --tlscert=/certs/server.pem --tlskey=/certs/server-key.pem consul://$(docker-machine ip keystore):8500
  • 12. Step 3~6: Startup Swarm Manager ● Start docker swarm worker ○ docker-machine create -d virtualbox --virtualbox-memory "2000" --engine-opt="label=com.function=frontend01" --engine-opt="cluster-store=consul://$(docker-machine ip keystore):8500" --engine-opt="cluster-advertise=eth1:2376" frontend01 ● Sync to fronted01 ○ eval $(docker-machine env frontend01) ● Join to Swarm Manager ○ docker run -d swarm join --addr=$(docker-machine ip frontend01):2376 consul://$(docker-machine ip keystore):8500
  • 13. Step 7: Startup Load Balancer ● Start docker swarm worker ○ docker-machine create -d virtualbox --virtualbox-memory "2000" --engine-opt="label=com.function=interlock" loadbalancer ● Download “Interlock” and setup ○ git clone https://github.com/ehazlett/interlock.git ○ cd config ○ Fill with `config.toml` ... ● Run Load Balancer “Interlock” ○ docker run -P -d -ti -v nginx:/etc/conf -v /var/lib/boot2docker:/var/lib/boot2docker:ro -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd)/config.toml:/etc/config.toml --name interlock ehazlett/interlock:1.0.1 -D run -c /etc/config.toml
  • 14. I can do this “ALL DAY”
  • 16. Different with Docker Swarm ● Where is “Consul” ? ○ The K/V DB already built-in in Swarm Kit ● More security communication. ○ It default support TLS ● What is Raft Consensus ? ○ For data consistentcy and election node if master is down.
  • 17. SwarmKit Master ● Build SwarmKit binaries ○ git clone https://github.com/docker/swarmkit.git ○ cd swarmkit ○ make setup ○ make all ● Run Swarm manager ○ swarmd -d /tmp/node-1 --listen-control-api /tmp/manager1/swarm.sock --hostname node-1
  • 18. SwarmKit Master ● Sync swarm socket ○ export SWARM_SOCKET=/tmp/manager1/ swarm.sock ● Check Swarm master ○ swarmctl cluster inspect default
  • 19. SwarmKit Agent ● Run Swarm Agent (worker) ○ swarmd -d /tmp/node-2 --hostname node-2 --join-addr 127.0.0.1:4242 --join-token SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1 wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz ○ swarmd -d /tmp/node-3 --hostname node-3 --join-addr 127.0.0.1:4242 --join-token SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1 wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz ● Check node status ○ swarmctl node ls
  • 21. SwarmKit Create A Service ● Create a Swarm Kit service ○ swarmctl service create --name redis --image redis:3.0.5 ● Make sure service status ○ swarmctl node ls
  • 22. SwarmKit Create A Service ● Create a Swarm Kit service ○ swarmctl service create --name redis --image redis:3.0.5 ● Make sure service status ○ swarmctl service ls ● Check detail of service ○ swarmctl service inspect redis
  • 23. SwarmKit Scale Your Service ● Scale Swarm Kit service ○ swarmctl service update redis --replicas 6 ● Make sure service status ○ swarmctl service ls ○ swarmctl service ls
  • 24. SwarmKit Scale Your Service ● Inspect service detail ○ swarmctl service inspect redis
  • 25. SwarmKit Update Service ● Update service directly ○ swarmctl service update redis --image redis:3.0.6
  • 26.
  • 27. SwarmKit Rolling Update ● Update two services every 10 seconds ○ swarmctl service update redis --image redis:3.0.7 --update-parallelism 2 --update-delay 10s
  • 28. SwarmKit Drain Node ● Stop node 1 ○ swarmctl node drain node-1
  • 29.
  • 30. ● Docker Swarm Mode ( Swarm version 2) ● New feature from Docker Engine 1.12 ● Powerful and more security Docker Swarm Mode
  • 31. Different between Docker Swarm, SwarmKit and Swarm V2 Docker Swarm SwarmKit Swarm Mode (v2) Docker Version All All >= 1.12 K/V DB Need extra one Built-In Built-In Extra Binaries No Yes (Use Go 1.6) No Security None Built-In Built-In Extra Service None None Routing Mesh Load Balance Support Docker Compose, Docker-Machine Yes Yes No (for now)
  • 32.
  • 33. Docker Swarm Mode Tutorial - Vote App
  • 34. Docker Swarm Mode: ● Create three docker machine ○ docker-machine create --driver virtualbox v1 ○ docker-machine create --driver virtualbox v2 ○ docker-machine create --driver virtualbox v3 V1 192.168.99.100 V2 192.168.99.101 V3 192.168.99.102
  • 35. Docker Swarm Mode: ● Connect to V1 node ○ docker-machine ssh v1 ○ ifconfig ● Init docker swarm manager ○ docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100 V1 192.168.99.100 V2 192.168.99.101 V3 192.168.99.102
  • 36. Docker Swarm Mode: ● Connect to V2, V3 node ○ docker-machine ssh v2 ○ docker-machine ssh v3 ● Init docker swarm worker ○ docker swarm join --token SWMTKN-1-62q9gzw8uc43fbv7n79 h7lsnmc6j2tqpzb4qy2osurxufxz87u- 97v5wplu0dvit5ssveo5da2h6 192.168.99.100:2377 V1 (Manager) 192.168.99.100 V2 (Worker) 192.168.99.101 V3 (Worker) 192.168.99.102
  • 37. Docker Swarm Mode: ● Check current node status ○ docker-machine ssh v1 ○ docker node ls V1 (Manager) 192.168.99.100 V2 (Worker) 192.168.99.101 V3 (Worker) 192.168.99.102
  • 38. Docker Swarm Mode: All setup is done
  • 39. Docker Swarm Mode: ● Connect to Swarm Manager create service “vote” ○ docker-machine ssh v1 ○ docker service create --name vote -p 8080:80 instavote/vote ● Check detail of this service ○ docker service ls ● Check which node run this service ○ docker service ps vote V1 (Manager) 192.168.99.100 V2 (Worker) 192.168.99.101 V3 (Worker) 192.168.99.102 instavote/ vote
  • 40.
  • 41.
  • 42. Docker Swarm Mode: ● Scale “vote” service to 3 ○ docker service scale vote=2 ● Check detail of this service ○ docker service ls ● Check which node run this service ○ docker service ps vote V1 (Manager) 192.168.99.100 V2 (Worker) 192.168.99.101 V3 (Worker) 192.168.99.102 instavote/ vote instavote/ vote Random
  • 44. Docker Swarm Mode: ● Scale “vote” service from 2 to 3 ○ docker service scale vote=3 ● Check detail of this service ○ docker service ls ● Check which node run this service ○ docker service ps vote V1 (Manager) 192.168.99.100 V2 (Worker) 192.168.99.101 V3 (Worker) 192.168.99.102 instavote/ vote instavote/ vote instavote/ vote
  • 45. Docker Swarm Mode: ● Service update (Immediately) ○ docker service update --image instavote/vote:movies vote ● Check detail of this service ○ docker service ls ● Check which node run this service ○ docker service ps vote V1 (Manager) 192.168.99.100 V2 (Worker) 192.168.99.101 V3 (Worker) 192.168.99.102 instavote/ vote: movies instavote/ vote: movies instavote/ vote: movies
  • 46. Docker Swarm Mode: ● Service update (Rolling Update) ○ docker service update vote --image instavote/vote:indent --update-parallelism 1 --update-delay 10s ● Check detail of this service ○ docker service ls ● Check which node run this service ○ docker service ps vote V1 (Manager) 192.168.99.100 V2 (Worker) 192.168.99.101 V3 (Worker) 192.168.99.102 instavote/ vote: indent instavote/ vote: indent instavote/ vote: indent
  • 47. Docker Swarm Mode: ● Global Services ○ docker service create --mode=global --name prometheus prom/prometheus ● Check detail of this service ○ docker service ls ● Check which node run this service ○ docker service ps prometheus V1 (Manager) 192.168.99.100 V2 (Worker) 192.168.99.101 V3 (Worker) 192.168.99.102 instavote/ vote: indent instavote/ vote: indent instavote/ vote: indent prometheus prometheus prometheus
  • 48. Different between Docker Swarm, SwarmKit and Swarm V2 Docker Swarm SwarmKit Swarm Mode (v2) Docker Version All All >= 1.12 K/V DB Need extra one Built-In Built-In Extra Binaries No Yes (Use Go 1.6) No Security None Built-In Built-In Extra Service None None Routing Mesh Load Balance Support Docker Compose, Docker-Machine Yes Yes No (for now)
  • 49. Q&A