docker swarm建立本地整合開發環境

2021-09-08 05:32:13 字數 1706 閱讀 5681

在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...