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
- Docker的Web UI管理:shipyard+swarm-(手动)安装&试用
- Docker的Web UI管理:shipyard+swarm-(手动)安装&试用
- Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例
- centos7下安装docker(24docker swarm 数据管理)
- centos7安装docker
- 在centos7上安装docker
- 在Centos7中安装Docker1.12的详细教程
- centos7下安装docker(8.2进入容器)
- docker centos7安装
- Centos7的安装、Docker1.12.3的安装
- Centos7上安装docker的方法
- Centos7安装docker-compse踩过的坑
- CentOS7安装docker
- centos7安装docker及私有仓库
- CentOS7安装使用Docker
- CentOS7安装Docker时的异常报错与解决方法
- CentOS7上安装Docker以及简单使用-yellowcong
- centos7下安装docker(22.docker swarm-----service)
- centos7安装docker并设置开机启动