More Related Content Similar to Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境 (20) Docker summit 2015: 以 Docker Swarm 打造多主機叢集環境3. Outline
‣ Introduce
‣ Linking containers together
‣ Linking Docker Engine
‣ multi-host networking
‣ Docker Swarm on multiple VM
‣ Docker Swarm on multiple cloud instance
7. 1 on 1
server database
Links
browser
test
case
JCConf 2015 workshop: 透過 docker 進⾏ e2e test,以 Gradle 及 Geb 為例
http://blog.trunk-studio.com/jcconf2015/
10. mysql:
container_name: mysql
image: dgraziotin/mysql
ports:
- "3306:3306"
environment:
MYSQL_ADMIN_PASS: "root"
MYSQL_USER_NAME: "nodejsSample"
MYSQL_USER_DB: "nodejsSample"
MYSQL_USER_PASS: "nodejsSample"
CREATE_MYSQL_BASIC_USER_AND_DB: "true"
volumes:
- ../database:/var/lib/mysql/
restart: always
web:
container_name: sailsSample
image: trunk/sails_env
command: "/bin/bash -l -c 'npm start'"
ports:
- "1337:1337"
working_dir: /sailsSample
volumes:
- ./:/sailsSample
external_links:
- mysql
restart: always
docker-compose up -d mysql
docker-compose up -d web
external_links
16. ‣ Port allow
‣ Docker Engine port (e.g TCP 2375)
‣ VXLAN: UDP 4789
‣ Serf: TCP + UDP 7946
‣ Key-value store ( e.g for Consul TCP 8500)
‣ Support Docker Network feature
‣ kernel 3.18+
17. Digital Ocean
‣ setup your token
‣ export DIGITALOCEAN_ACCESS_TOKEN=12345
https://github.com/TrunkWorkshop/docker-swarm-sample/tree/master/digitalocean
18. Google Cloud Platform
‣ gcloud auth login https://cloud.google.com/sdk/
‣ create google-project
‣ export GOOGLE_PROJECT='project name'
‣ activate Compute Engine API
‣ setup firewall-rules
‣ gcloud compute firewall-rules update default-swarm --allow tcp:2376 tcp:2375
tcp:3376 tcp:8500 UDP:4789 TCP:7946 UDP:7946 --source-range 0.0.0.0/0
‣ gcloud compute firewall-rules create default-demo --allow tcp:5000 tcp:27017
tcp:80 --source-range 0.0.0.0/0
https://github.com/TrunkWorkshop/docker-swarm-sample/tree/master/google
21. key-store
consul
create-machine-swarm-master:
docker-machine create
--driver digitalocean
--digitalocean-image ubuntu-15-10-x64
--swarm --swarm-image="swarm" --swarm-master
--swarm-discovery="consul://$(DOCKER_IP_KEYSTORE):8500"
--engine-opt="cluster-store=consul://$(DOCKER_IP_KEYSTORE):8500"
--engine-opt="cluster-advertise=eth0:2376"
digitalocean-master
Create Swarm Master
Swarm
Master
Docker
Machine
export DOCKER_IP_KEYSTORE=$(docker-machine ip digitalocean-keystore)
Digital Ocean
My laptop
Digital Ocean
22. key-store
consul
create-machine-swarm-node:
docker-machine create
--driver digitalocean
--digitalocean-image ubuntu-15-10-x64
--swarm --swarm-image="swarm"
--swarm-discovery="consul://$(DOCKER_IP_KEYSTORE):8500"
--engine-opt="cluster-store=consul://$(DOCKER_IP_KEYSTORE):8500"
--engine-opt="cluster-advertise=eth0:2376"
digitalocean-node
Create Swarm Node
Swarm
Master
Docker
Machine
export DOCKER_IP_KEYSTORE=$(docker-machine ip digitalocean-keystore)
Swarm
Node
Digital Ocean
My laptop
Digital Ocean
Google
29. Docker Commandrun-sample-server:
docker run -itd
--name=web
--net=cloud-overlay
--env="constraint:node==master"
nginx
run-sample-client:
docker run -it --rm
--net=cloud-overlay
--env="constraint:node==node"
busybox wget -O- http://web
Overlay
Network
key-store
consul
Swarm
Master
Swarm
Node
Docker
Machine
api server
client server
36. High availability in Docker Swarm
https://docs.docker.com/swarm/multi-manager-setup/
Docker-swarm Docker
http://blog.trunk-studio.com/docker-swarm-network/
DockerCon EU 2015 Hands-On Labs
https://github.com/docker/dceu_tutorials