docker-swarm如何实现label指定服务器?

查看数: 13403 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-5-10 17:09

正文摘要:

最近在多服务器下跑swarm,牵涉到指定服务器的问题,但发现label标签怎么设置都无效过。 docker service create --replicas 3 --name helloworld --label servicetype="kafka" alpine ping docker.com ...

回复

lanyangkj 发表于 2017-6-27 15:34:27
此帖已结贴,在新版的docker已经解决了。需要帮忙可以私信与我。谢谢大家
langke93 发表于 2017-5-13 22:18:44
lanyangkj 发表于 2017-5-11 14:54
那大神,如何在swarm下让容器在指定服务器上运行呢。

上面其实都已经展现了。目前还未找到楼主所说的内容
lanyangkj 发表于 2017-5-11 14:54:08
langke93 发表于 2017-5-11 14:02
楼主在官网其实已经查到了。node 的label起不到过滤的作用。

那大神,如何在swarm下让容器在指定服务器上运行呢。
langke93 发表于 2017-5-11 14:02:53
lanyangkj 发表于 2017-5-11 09:57
那node中的--label-add 该如何写? com.example.foo 这个是什么东西??

楼主在官网其实已经查到了。node 的label起不到过滤的作用。
lanyangkj 发表于 2017-5-11 09:57:46
einhep 发表于 2017-5-11 09:47
--label com.example.foo="bar"
  --label bar=baz \
这应该是两个

那node中的--label-add 该如何写? [size=13.3333px]com.example.foo 这个是什么东西??



[root@docker-02 ~]# docker node ls -f "label=foo"
ID  HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
[root@docker-02 ~]#



我总感觉,这个对swarm来说 label标签不可用,你看上边的过滤器都查不到东西。 而name标签却是可以的。看下图:


[root@docker-02 ~]# docker node ls -f "name=docker-03"
ID                         HOSTNAME   STATUS  AVAILABILITY  MANAGER STATUS
mfbk8anq4ozuf0mz64xrdjv9z  docker-03  Ready   Active        
[root@docker-02 ~]#

einhep 发表于 2017-5-11 09:47:03
lanyangkj 发表于 2017-5-11 09:26
十分感谢您的回复,我再问下,因为node节点标签与容器创建分发应该是成对出现的。
docker service create  ...

--label com.example.foo="bar"
  --label bar=baz \
这应该是两个

lanyangkj 发表于 2017-5-11 09:26:22
十分感谢您的回复,我再问下,因为node节点标签与容器创建分发应该是成对出现的。
docker service create \
  --name redis_2 \
  --label com.example.foo="bar"
  --label bar=baz \
  redis:3.0.6

你这个只写了容器创建, 那节点上该如何标注呢。 反正我用 --label-add 好像匹配不到,达不到预期的效果。

比如说,

--label com.example.foo="bar"
  --label bar=baz \
这个两个key=value还是一个呀。
与之对应--label-add 该如何定义才生效呢??
在线等,谢谢!!
w123aw 发表于 2017-5-10 18:24:21
lanyangkj 发表于 2017-5-10 17:34
为什么会有这种场景吧?比如说,我mysql只能指定到其中某台服务器执行,这时候就不能让自动均衡,否则有些 ...

首先这种方式是可以的。至于楼主为什么不生效,可以看看命令格式等。下面参考
例如
[mw_shl_code=bash,true]docker service create \
  --name redis_2 \
  --label com.example.foo="bar"
  --label bar=baz \
  redis:3.0.6[/mw_shl_code]
更多信息
https://docs.docker.com/engine/userguide/labels-custom-metadata/

除了这种方式还有其它方式
比如
[mw_shl_code=bash,true]docker run -d -P \
-e constraint:storage=ssd \
-e constraint:zone=external \
-t nginx[/mw_shl_code]
更多参考
http://www.aboutyun.com/home.php ... do=blog&id=3343

lanyangkj 发表于 2017-5-10 17:34:27
为什么会有这种场景吧?比如说,我mysql只能指定到其中某台服务器执行,这时候就不能让自动均衡,否则有些宿主机的磁盘卷或者文件就找不到了。
关闭

推荐上一条 /2 下一条