docker swarm管理(Docker Swarm 服务编排之命令详解)
docker swarm管理
Docker Swarm 服务编排之命令详解一、简介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
资源限制配置
version: '3' services: redis: image: redis:alpine deploy: resources: limits: cpus: '0.50' memory: 50M reservations: cpus: '0.25' memory: 20M
在下例中,redis服务限制使用不超过50M的内存和0.50(50%)的可用处理时间(CPU),并且拥有20M的内存和0.25个CPU时间(总是可用)。
(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:更新期间允许的失败率o
- rder:更新期间的操作顺序。停止优先(旧任务在开始新任务之前停止)或者先启动(首先启动新任务,并且正在运行的任务短暂重叠)(默认停止优先)注意:只支持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 服务编排之命令的详细内容,更多关于Docker Swarm 服务编排的资料请关注开心学习网其它相关文章!
- docker desktop怎么安装共识容器(安装Docker Desktop报错WSL 2 installation is incomplete的问题解决报错)
- 日常操作docker命令(Docker常用命令详解)
- 如何使用docker部署(使用远程Docker进行集成测试的环境搭建过程)
- 用docker搭建在线开发环境(Docker环境搭建的简单方法)
- web开发如何正确使用docker(Docker部署web项目的实现)
- dockergitlab自动化教程(docker+gitlab+jenkins从零搭建自动化部署)
- nginx代理docker容器(Docker Nginx容器制作部署实现方法)
- docker停止删除所有容器方法(Docker stop停止/remove删除所有容器)
- tomcat docker 性能(Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作)
- dockermysql实例(docker 连接宿主Mysql操作)
- docker容器内服务怎么启动(docker部署confluence的完整步骤)
- dockercompose设置系统环境变量(使用docker compose搭建consul集群环境的例子)
- 群晖docker搭建代理服务(群晖NAS利用Docker容器搭建KMS激活服务器实现激活windows系统和office操作步骤)
- docker配置和启动(Docker的安装与配置命令代码实例)
- docker查看运行容器参数(Docker容器时区调整操作)
- docker运行环境centos(如何在centos的docker里安装jupyter并开放端口)
- 《九牛之人降魔传》开机 演员祁高坤化身九牛之人除魔卫道(九牛之人降魔传开机)
- 王铲铲的致富之路无限金币卡法攻略教学(王铲铲的致富之路无限金币卡法攻略教学)
- 文明6金币太少怎么办 文明6无限刷钱教程(文明6金币太少怎么办)
- 开国中将,王牌军63军首任政委,两个连襟一个上将一个少将传为佳话(王牌军63军首任政委)
- 臭名昭著的731部队最高负责人 石井四郎(臭名昭著的731部队最高负责人)
- 王牌部队,你看的剧情我看的时尚(你看的剧情我看的时尚)
热门推荐
- 阿里云对象存储oss收费吗(阿里云存储服务OSS基本概念)
- CSS filter:hue-rotate色调旋转滤镜实现按钮批量生产(CSS filter:hue-rotate色调旋转滤镜实现按钮批量生产)
- vue 排班安排(vue实现钉钉的考勤日历)
- 云服务器哪种操作系统好(云服务器选什么操作系统比较好?)
- navicat如何连接sql数据库(Navicat 连接SQLServer数据库图文步骤)
- php面向对象运用场景(PHP面向对象类型约束用法分析)
- vue左侧边栏的制作(Vue+Vant实现顶部搜索栏)
- docker端口映射和暴露端口的区别(解决docker指定udp端口号的问题)
- css3轮播案例(纯CSS3实现图片无间断轮播效果)
- python字符串分析总结(Python 存储字符串时节省空间的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9