gause 发表于 2017-8-8 16:49:27

请教docker swarm中指定主机的问题

请教大家个问题,我要在docker swarm集群中指定容器在一个主机上运行,我在manager上用这个命令给集群中的主机worker-1添加标签,但是感觉都没有生效
docker node update --label-add data=test worker-1


然后再使用下面这个yml
version: '3'
services:
web:
    image: wordpress:4
    environment:
      - WORDPRESS_DB_PASSWORD=password
      - WORDPRESS_AUTH_KEY=changeme
      - WORDPRESS_SECURE_AUTH_KEY=changeme
      - WORDPRESS_LOGGED_IN_KEY=changeme
      - WORDPRESS_NONCE_KEY=changeme
      - WORDPRESS_AUTH_SALT=changeme
      - WORDPRESS_SECURE_AUTH_SALT=changeme
      - WORDPRESS_LOGGED_IN_SALT=changeme
      - WORDPRESS_NONCE_SALT=changeme
      - WORDPRESS_NONCE_AA=changeme
    ports:
      - 80:80
    depends_on:
      - mysql
    deploy:
      replicas: 3
      placement:
      constraints:
          - date == test
      restart_policy:
      condition: on-failure
mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=password
    deploy:
      placement:
      constraints:
          - date == test
      restart_policy:
      condition: on-failure

然后容器都没有在主机上起起来。不知道是不是哪里存在问题,请大家指点下,谢谢。

2017 发表于 2017-8-8 19:04:14

跟这个问题一样,似乎新版已经解决这个问题
docker-swarm如何实现label指定服务器?
http://www.aboutyun.com/forum.php?mod=viewthread&tid=21715

gause 发表于 2017-8-9 09:28:31

2017 发表于 2017-8-8 19:04
跟这个问题一样,似乎新版已经解决这个问题
docker-swarm如何实现label指定服务器?
http://www.aboutyun ...

谢谢,但是我的版本已经是17.05,算很新了。也有问那帖子的楼主。

lanyangkj 发表于 2017-8-10 09:00:00

不好意思,最近一直在解决docker swarm下mysql cluster问题没顾上回答你,刚找到突破口,松了口气。 这样的,你的yml应该这样写:

      placement:
      constraints:
          - node.labels.date == test
试试吧,亲!

lanyangkj 发表于 2017-8-10 09:02:28

lanyangkj 发表于 2017-8-10 09:00
不好意思,最近一直在解决docker swarm下mysql cluster问题没顾上回答你,刚找到突破口,松了口气。 这样的 ...

如果解决了,就给出评论。方便下个人解决类似问题。

gause 发表于 2017-8-10 13:36:19

lanyangkj 发表于 2017-8-10 09:00
不好意思,最近一直在解决docker swarm下mysql cluster问题没顾上回答你,刚找到突破口,松了口气。 这样的 ...

好的,我试试看先,非常感谢。

lanyangkj 发表于 2017-8-11 08:56:18

gause 发表于 2017-8-10 13:36
好的,我试试看先,非常感谢。

可行吗?

gause 发表于 2017-8-11 15:02:58

lanyangkj 发表于 2017-8-11 08:56
可行吗?

还是不行,按照你那样改了yml文件,运行后没有在主机上运行起容器,删点yml中标签的定义后运行就正常起了容器。

lanyangkj 发表于 2017-8-15 13:56:46

gause 发表于 2017-8-11 15:02
还是不行,按照你那样改了yml文件,运行后没有在主机上运行起容器,删点yml中标签的定义后运行就正常起了 ...

你在试试哦,肯定是没问题的。可能是你哪配置不当引起的。

gause 发表于 2017-8-16 11:55:30

本帖最后由 gause 于 2017-8-16 13:57 编辑

lanyangkj 发表于 2017-8-15 13:56
你在试试哦,肯定是没问题的。可能是你哪配置不当引起的。
试过几次,还是没成功,想不到还会有哪里的问题。
总的应该就两步很简单才对.
1、在manager上执行以下命令给worker-1节点添加标签
docker node update --label-add datatest=test worker-1


2、用下面这个创建但是容器没生成
docker service create \
--name nginx \
--replicas 3 \
--constraint 'node.labels.datetest == test' \
nginx


如果考虑试试换成用节点的方式约束,发现就正常,所以我想可能是第一条命令给节点添加标签就没成功或者不正常,导致创建服务的时候找不到该标签的节点所以没有生成容器运行。
docker service create \
--name nginx \
--replicas 3 \
--constraint 'node.hostname == worker-1' \
nginx

页: [1] 2
查看完整版本: 请教docker swarm中指定主机的问题