分享

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

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


13.png

请问 --label servicetype="kafka"  这种指定主机方式真的无效了吗?


还有没更加可行的方法


请高手指点。
12.png

已有(9)人评论

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

使用道具 举报

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-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 该如何定义才生效呢??
在线等,谢谢!!
回复

使用道具 举报

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: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 ~]#

回复

使用道具 举报

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 14:54:08
langke93 发表于 2017-5-11 14:02
楼主在官网其实已经查到了。node 的label起不到过滤的作用。

那大神,如何在swarm下让容器在指定服务器上运行呢。
回复

使用道具 举报

langke93 发表于 2017-5-13 22:18:44
lanyangkj 发表于 2017-5-11 14:54
那大神,如何在swarm下让容器在指定服务器上运行呢。

上面其实都已经展现了。目前还未找到楼主所说的内容
回复

使用道具 举报

lanyangkj 发表于 2017-6-27 15:34:27
此帖已结贴,在新版的docker已经解决了。需要帮忙可以私信与我。谢谢大家
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条