SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionPeng Xiao
 
stupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfstupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfDaniloQueirozMota
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageejlp12
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker IntroductionPeng Xiao
 
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...Edureka!
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes NetworkingCJ Cullen
 
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화OpenStack Korea Community
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 introTerry Cho
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking OverviewSreenivas Makam
 
Docker introduction
Docker introductionDocker introduction
Docker introductiondotCloud
 
Docker Architecture (v1.3)
Docker Architecture (v1.3)Docker Architecture (v1.3)
Docker Architecture (v1.3)rajdeep
 
Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2Chartbeat
 
[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험NHN FORWARD
 
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...Edureka!
 
Introduction to docker and docker compose
Introduction to docker and docker composeIntroduction to docker and docker compose
Introduction to docker and docker composeLalatendu Mohanty
 
Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubeletChanyeol yoon
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationSuresh Kumar
 

Tendances (20)

Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
stupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfstupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdf
 
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and image
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes Networking
 
Docker swarm
Docker swarmDocker swarm
Docker swarm
 
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking Overview
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker Architecture (v1.3)
Docker Architecture (v1.3)Docker Architecture (v1.3)
Docker Architecture (v1.3)
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Network automation (NetDevOps) with Ansible
Network automation (NetDevOps) with AnsibleNetwork automation (NetDevOps) with Ansible
Network automation (NetDevOps) with Ansible
 
Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2
 
[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험
 
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
Docker vs VM | | Containerization or Virtualization - The Differences | DevOp...
 
Introduction to docker and docker compose
Introduction to docker and docker composeIntroduction to docker and docker compose
Introduction to docker and docker compose
 
Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubelet
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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
DockerDocker
Docker
 
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
 

Plus de 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
 

Plus de 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
 

Dernier

SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
 
IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119APNIC
 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxMario
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxmibuzondetrabajo
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxDyna Gilbert
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxAndrieCagasanAkio
 

Dernier (11)

SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
 
IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119
 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptx
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptx
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptx
 

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