centos7下安装docker(25docker swarm---replicated mode&global mode)
swarm可以在service创建或运行过程中灵活的通过--replicas调整容器的副本数量,内部调整调度器则会根据当前集群资源使用的情况在不同的node上启动或停止容器,这就是service默认的replicated mode。在此模式下,node上运行的副本数有多有少,一般情况下,资源更丰富的node运行的副本数更多,反之亦然。
除了replicated mode,service还提供了一个global mode,起作用是强制在每个node上都运行一个且最多一个副本。
此模式特备适合需要运行daemon的集群环境。比如要收集所有容器的日志,就可以以global mode创建service,在所有的node上运行gliderlabs/logspout容器,及时之后有新的node加入,swarm也会自动在新node上启动一个gliderlabs/logspout副本。
docker service create --mode global --name logspout gliderlabs/logspout

通过docker service inspect查看service的mode
注:如果创建service时不指定mode,默认使用replicated
无论是采用global mode还是replicated mode,副本运行在哪些节点上都是由swarm决定的。如何做到精细的控制service的运行位置呢?
答案是:使用label
逻辑分为两步:
1.为每个node定义label
2.设置service运行在指定的label的node上
lable可以灵活描述node的属性,其形式是key=value,用户可以任意指定,
例如将docker1作为测试环境,为其添加label env=test
docker node update --label-add env=test docker1

docker node inspect docker1 --pretty

对应的将docker2作为生产环境,添加label env=prod
docker node update --label-add env-prod docker2


现在部署service到测试环境:
docker service create --name web-label --constraint node.labels.env==test --replicas 3 --publish 8081:80 httpd

--constraint node.labels.env==test 限制将service部署到label=test的node,即docker1上。从部署的结果上看,三个副本全部都运行在docker1上
可以通过docker service inspect查看--constraint的设置

更新service,将其迁移到生产环境:
先将web-label service的label删除
docker service update --constraint-rm node.labels.env==test web-label

删除label后的service副本的位置


重新设置web-label service的label
docker service update --constraint-add node.labels.env==prod web-service


可以看到:就算之前的副本在docker2上,通过update指定label时,还是会重新启动一个副本
通过docker service inspect 查看constraint

label还可以和global模式综合起来使用,比如只收集生产环境中的容器的日志
docker service create --mode global --constraint-add node.labels.env==prod --name logspout gliderlabs/logspout
只有docker2节点才会运行logspout
centos7下安装docker(25docker swarm---replicated mode&global mode)的更多相关文章
- docker(一) Centos7下安装docker
docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...
- CentOS7下安装docker(Docker系列1)
CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...
- centos7下安装docker与镜像加速
1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...
- centos7 下安装docker报错:You could try using...
搞了台VPS,想要装docker,发现死活装不上,各种报错.之前系统是centos6,发现官方现在已经不支持centos6了,遂升级到centos7,然后还是出现下面这个错误. Error: Pack ...
- centos7下安装docker(21docker swarm集群创建)
创建swarm集群: 实验环境:盗图 swarm-manager是manager node,swarm-worker1和swarm-worker2是worker node. 所有节点的docker版本 ...
- centos7下安装docker(20.docker swarm start)
从主机的层面来看,docker swarm管理的是docker host集群. 什么是集群? 服务器集群由一组网络上相互连接的服务器组成,他们一起协同工作. 一个集群和一堆服务器的显著区别是: 集 ...
- Linux(centos7)下安装Docker
近期公司开始推Docker技术.这个系列的文章都是基于CentOS7系统下进行讲解的. Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器 ...
- Docker学习笔记1:CentOS7 下安装Docker
本文内容摘自官网:https://docs.docker.com/engine/installation/linux/centos/#/create-a-docker-group 注:本文是介绍Lin ...
- centos7下安装docker(19容器架构)
What,Why,How What:什么是容器? 说起容器大家想到的是什么? 集装箱(container),虚拟机,docker,k8s 1. 没毛病,因为容器与集装箱的英文都可以翻译成co ...
- centos7下安装docker(14安装docker machine)
之前我们做的实验都是在一个host上面的,其实在真正的环境中有多个host,容器在这些host上面启动,运行,停止和销毁,相关容器会通过网络相互通信,无论他们是否运行在相同的host上面. 对于这种歌 ...
随机推荐
- struts2_Action的三种实现方式
1.普通java类 package com.ahd.action; public class HelloAction{ public String execute() throws Exception ...
- Base64字符保存图片,图片转换成Base64字符编码
//文件转换成Base64编码 public static String getFileBase64Str(String filePath) throws IOException { String f ...
- awk 详解
AWK 简介 AWK是一种优良的文本处理工具.它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho .Pete ...
- Java基础IO流(四)序列化与反序列化
对象的序列化与反序列化: 对象的序列化,就是将Object转换成byte序列,反之叫对象的反序列化. 序列化流(ObjectOutInputStream),是过滤流 -------writeObjec ...
- SQL多表联合查询(交叉连接,内连接,外连接)
连接查询: 交叉连接: 交叉连接返回的结果是被连接的两个表中所有数据行的笛卡尔积,也就是返回第一个表中符合查询条件的数据航数乘以第二个表中符合,查询条件的数据行数,例如department ...
- 空间、域名与IP之间的关系?
空间说白了就是服务器里面你可以使用的一个地方,在这里你可以放置数据和程序.最常用的就是放置您的网站程序和相关的所有文档和图片文件等等.这个放置你的网站文件的空间所在的服务器会有一个电信部门分配的固定编 ...
- Java岗 面试考点精讲(基础篇01期)
即将到来金三银四人才招聘的高峰期,渴望跳槽的朋友肯定跟我一样四处找以往的面试题,但又感觉找的又不完整,在这里我将把我所见到的题目做一总结,并尽力将答案术语化.标准化.预祝大家面试顺利. 术语会让你的面 ...
- loj#2049. 「HNOI2016」网络(set 树剖 暴力)
题意 题目链接 Sol 下面的代码是\(O(nlog^3n)\)的暴力. 因为从一个点向上只会跳\(logn\)次,所以可以暴力的把未经过的处理出来然后每个点开个multiset维护最大值 #incl ...
- 【代码笔记】Web-Javascript-javascript break和continue语句
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- sdk manager闪退
,1确认好sdk环境变量是否都正确 命令行:android 来验证 2确定jdk是否安装正确 命令行:java 和 javac 都没有问题,就将sdk安装版覆盖安装下不要卸载,不然下载的太慢了 ...