分享

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

gause 发表于 2017-8-8 16:49:27 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 10 11066
请教大家个问题,我要在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

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

已有(10)人评论

跳转到指定楼层
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

还是不行,按照你那样改了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

回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条