docker swarm yaml
https://www.cnblogs.com/bigberg/p/8867326.html
一、简介
Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理。同样在Swarm集群中,可以使用docker stack 将一组相关联的服务进行编排管理。
Docker stack 也是一个yaml文件,和一份docker-compose.yml文件差不多,指令也基本一致。但是与compose相比其不支持build、links和network_mode。Docker stack有一个新的指令deploy。
注:stack不支持的指令
二、Deploy
Deploy是用来指定swarm服务部署和运行时的相关配置,并且只有使用docker stack deploy 部署swarm集群时才会生效。如果使用docker-compose up 或者docker-compose run时,该选项会被忽略。要使用deploy选项,compose-file中version版本要在3或3+。
version: '3'
services:
redis:
image: redis:alpine
deploy:
replicas: 6
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
(1)ENDPOINT_MODE
指定swarm服务发现的模式
- endpoint_mode: vip - Docker为swarm集群服务分配一个虚拟IP(VIP),作为客户端到达集群服务的“前端”。Docker 在客户端和可用工作节点之间对服务的请求进行路由。而客户端不用知道有多少节点参与服务或者是这些节点的IP/端口。(这是默认模式)
- endpoint_mode: dnsrr -
DNS轮询(DNSRR)服务发现不使用单个虚拟IP。 Docker为服务设置DNS条目,使得服务名称的DNS查询返回一个IP地址列表,并且客户端直接连接到其中的一个。如果您想使用自己的负载平衡器,或者混合Windows和Linux应用程序,则DNS轮询功能非常有用。
注:version 3.3+
version: "3.3" services:
wordpress:
image: wordpress
ports:
- 8080:80
networks:
- overlay
deploy:
mode: replicated
replicas: 2
endpoint_mode: vip mysql:
image: mysql
volumes:
- db-data:/var/lib/mysql/data
networks:
- overlay
deploy:
mode: replicated
replicas: 2
endpoint_mode: dnsrr volumes:
db-data: networks:
overlay:
(2)LABELS
指定服务的标签。这些标签仅在服务上设置,而不在服务的任何容器上设置
version: "3"
services:
web:
image: web
deploy:
labels:
com.example.description: "This label will appear on the web service"
要改为在容器上设置标签,请在deploy之外使用标签键
version: "3"
services:
web:
image: web
labels:
com.example.description: "This label will appear on all containers for the web service"
(3)MODE
全局(每个群集节点只有一个容器)或副本(指定容器的数量)。默认值被副本。
version: '3'
services:
worker:
image: dockersamples/examplevotingapp_worker
deploy:
mode: global
(4)PLACEMENT
指定约束和偏好设置
version: '3'
services:
db:
image: postgres
deploy:
placement:
constraints:
- node.role == manager
- engine.labels.operatingsystem == ubuntu 14.04
preferences:
- spread: node.labels.zone
(5)REPLICAS
如果服务是副本模式(默认模式),可以指定该服务运行的容器数量。
version: '3'
services:
worker:
image: dockersamples/examplevotingapp_worker
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 6
(6)RESOURCES
资源限制配置
注意:这会替换版本3之前的Compose文件(cpu_shares,cpu_quota,cpuset,mem_limit,memswap_limit,mem_swappiness)
中的非群集模式的旧资源约束选项,如升级2.x版至3.x中所述。
在下例中,redis服务限制使用不超过50M的内存和0.50(50%)的可用处理时间(CPU),并且拥有20M的内存和0.25个CPU时间(总是可用)。
version: '3'
services:
redis:
image: redis:alpine
deploy:
resources:
limits:
cpus: '0.50'
memory: 50M
reservations:
cpus: '0.25'
memory: 20M
(7)RESTART_POLICY
配置在容器退出时是否并如何重启容器。取代restart指令。
- condition :none、on-failure和any(默认any)
- delay :在重启尝试之间等待多久(默认0)
- max_attempts :尝试重启的次数(默认一直重启,直到成功)
- window : 在确实一个重启是否成功前需要等待的窗口时间
version: "3"
services:
redis:
image: redis:alpine
deploy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
(8)UPDATE_CONFIG
配置服务如何升级
- parallelism:同一时间升级的容器数量
- delay:容器升级间隔时间
- failure_action:升级失败后的动作(continue、rollback和pause。默认pause)。
- monitor:更新完成后确实成功的时间(ns|us|ms|s|m|h)。(默认0s)
- max_failure_ratio:更新期间允许的失败率
- order: 更新期间的操作顺序。停止优先(旧任务在开始新任务之前停止)或者先启动(首先启动新任务,并且正在运行的任务短暂重叠)(默认停止优先)注意:只支持v3.4及更高版本。
version: '3.4'
services:
vote:
image: dockersamples/examplevotingapp_vote:before
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
order: stop-first
(9)depends_on
表示服务之间的依赖关系
version: '3'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
(10)dns
自定义DNS服务器。可以是单个值或列表。
dns: 8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
(11)dns_search
dns_search: example.com
dns_search:
- dc1.example.com
- dc2.example.com
(12)environment
添加环境变量。您可以使用数组或字典。任何布尔值;真/假,是/否,需要用引号括起来以确保它们不被YML解析器转换为True或False。
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET: environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRET
(13)expose
开放容器的端口而不用在主机上暴露端口,它们只能被相关联的服务获取。只能指定内部端口。
expose:
- "3000"
- "8000"
docker swarm yaml的更多相关文章
- 使用容器编排工具docker swarm安装clickhouse多机集群
1.首先需要安装docker最新版,docker 目前自带swarm容器编排工具 2.选中一台机器作为master,执行命令sudo docker swarm init [options] 3,再需 ...
- docker swarm 搭建与服务更新
一,docker swarm 是什么 Docker Swarm.Docker Machine与Docker Compose号称Docker三剑客Docker Swarm 和 Docker Compos ...
- docker swarm 英文参考资料阅读列表
将自己在使用 docker swarm 过程中阅读的英文参考资料收集在这篇博文中,便于以后查阅与温习,顺带分享. 2017年8月5日之前阅读 My experience with Docker Swa ...
- Docker Swarm——集群管理
前言 之前在总结docker machine的时候,当时对docker理解还不够深入,甚至还不知道 docker machine 与 docker swarm 的区别. 在查阅资料以及官方文档之后,今 ...
- 从零开始,使用Docker Swarm部署集群教程
本文首先从Dockerfile创建了一个简单web镜像 然后将web镜像推送到了远程仓库,以备后面集群中不同机器自动下载 之后使用docker-compose.yml配置了一个应用 而后新建了2台虚拟 ...
- docker swarm实现java项目的发布/滚动更新/回滚/镜像管理
使用docker swarm滚动更新java项目,部署集群,这一切的前提是使用Jenkins+maven进行项目打包,分发等功能 具体可以参考我的另外三篇文章 https://www.cnblogs. ...
- docker swarm overlay stack 服务部署记录
项目xxx(后端),xxx-ui前端(前后端分离的项目) 依赖mysql,elasticsearch.分别制作了四个镜像来做这件事.希望可以制作跨主机的部署,使用了swarm,以下是学习记录. 参考 ...
- 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm
微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...
- k8s 开船记-首航:博客站点从 docker swarm 切换到 k8s
昨天晚上,我们将博客站点的生产环境从 docker swarm 集群切换到了 k8s 集群,开船到目前,航行非常平稳,可以说首航成功! k8s 集群是我们用10台阿里云服务器自己搭建的,1台 mast ...
随机推荐
- 【Beta】Scrum meeting 3
目录 写在前面 进度情况 任务进度表 Beta-1阶段燃尽图 遇到的困难 照片 commit记录截图 小程序前端仓库 技术博客 写在前面 例会时间:5.7 22:30-23:00 例会地点:微信群语音 ...
- [技术博客]Pyqt5实现Widget内部拖拽
Pyqt5实现Widget内部拖拽 在本次项目的beta迭代中,程序需要在需要在QListWidget内实现对于添加后的测试序列,可以通过鼠标拖拽的方式来移动测试序列,方便用户操作. 允许拖拽 ...
- T-MAX——团队展示
第一次团队博客:百战黄沙穿金甲 基础介绍 这个作业属于哪个课程 2019秋福大软件工程实践Z班 这个作业要求在哪里 团队作业第一次-团队展示 团队名称 T-MAX 这个作业的目标 展现团队成员的风采, ...
- test软件工程第三次作业
零.前言 本次作业要求个人编写程序,截止日期2019年9月25日23:00. 请先阅读<构建之法>第一章至第三章的内容,并在下方作业里体现出阅读后的成果.特别是第2章中的效能分析及个人软件 ...
- 用JAVA把内存里的二进制文件打包成ZIP包
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.ut ...
- Android Sensor 架构深入剖析【转】
本文转载自: 1.Android sensor架构 Android4.0系统内置对传感器的支持达13种,它们分别是:加速度传感器 (accelerometer).磁力传感器(magnetic fiel ...
- RSA前台加密后台解密的应用
写在前面 项目安全测试需要将登录功能修改, AES加密不符合要求, 现改为RSA非对称加密.(将登录密码加密后传给后台, 后台解密后再进行一系列的校验) .期间遇到了前台js加密但是后台解密失败的问题 ...
- Hash算法及java HashMap底层实现原理理解(含jdk 1.7以及jdk 1.8)
现在很多公司面试都喜欢问java的HashMap原理,特在此整理相关原理及实现,主要还是因为很多开发集合框架都不甚理解,更不要说各种其他数据结构了,所以造成面子造飞机,进去拧螺丝. 1.哈希表结构的优 ...
- Mariadb 10.3.17 中启用binlog
先检查是否开启了binlogSHOW VARIABLES LIKE 'log_bin';如果提示:+---------------+-------+| Variable_name | Value |+ ...
- Android Studio 3.0——unable to resolve dependency for cordovalib
Android Studio 3.0 更新了gradle后,项目竟然开始报错unable to resolve dependency for cordovalib...打开build.gradle看了 ...