在k8s出現之後,docker-swarm使用的人越來越少,但在本地整合開發環境的搭建上,使用它還是比較輕量級的,它比docker-compose最大的好處就是容器之間的共享和服務的治理,你不需要links容器,也不知道關心失敗之後的重啟,這些都於swarm來實現。
對於docker-compose和docker-swarm的分工
docker-compose用來進行映象的編排,同時將多個相關映象構建
docker-swarm用來啟動和管理容器,它不能構建映象
建立compose檔案,不支援build,links,depends_on
services:
db:image: arungupta/couchbase:latest
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 11210:11210
swarm初始化docker swarm init
建立服務docker stack deploy --compose-file=docker-compose-swarm.yml lind
檢視所有服務列表docker stack ls
檢視指定服務docker stack services lind
更新某個服務docker service update lind_service1 //有時我們的lind_service1依賴於configserver,當後者沒有重啟動,前者會一直報錯,然後使用預設的配置,由於預設配置為localhost,所以就出現了連線失敗的情況
刪除服務docker stack rm lind
痛點
configserver是比較低層的服務,所有專案的配置都來自於這個服務,我們拿eureka配置為例,如果專案從配置中心拿不到它的配置,會使用預設的localhost:8761做為連線位址,這在某些不是localhost:8761的環境下,這簡直就成了災難。
配置中心使用本地倉庫
配置中心的目錄必須是git倉庫,預設是master分支
使用docker-comopse部署時,使用volumes把宿主目錄掛載到容器目錄,例如固定為config_repo,它可以在yml檔案裡提前宣告。
configserver:
image: swarm_configserver
ports:
- "6200:6200"
- "6201:6201"
environment:
spring_profiles_active: development
port: 6200
bg_port: 6201
eureka_port: 6761
my_ip: 192.168.170.30
volumes:
- /users/lind.zhang/github/config_repo:/config_repo
spring:
profiles: development
cloud:
config:
server:
git:
uri: /config_repo
Docker Swarm排程策略
swarm在用命令swarm manager啟動swarm manager時,可用 strategy指定排程策略。swarm提供了三種排程策略計算節點的排名,在排程 例如選擇哪乙個節點執行容器時 時,取排名最前的節點。這三種排程策略是 spread binpack random random策略 隨...
docker swarm核心概念
翻譯自docker官方文件,原文 本節介紹了docker1.12中集群管理和編排特性的特有概念。節點是swarm中的乙個docker引擎例項。你也可以把它想成是乙個docker節點。你可以在乙個物理機或雲伺服器上執行多個節點,但生產環境中的swarm部署通常包括分布在多個物理機和雲平台上的docke...
docker swarm 管理服務
docker swarm中服務的概念是 乙個服務包含swarm集群中多個節點,每個節點都可以部署服務,每個服務也包含多個相關的容器。docker service help commands create create a new service inspect display detailed in...