Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Swarm-在每台机器上调度容器_Docker_Docker Compose_Docker Machine_Docker Swarm - Fatal编程技术网

Docker Swarm-在每台机器上调度容器

Docker Swarm-在每台机器上调度容器,docker,docker-compose,docker-machine,docker-swarm,Docker,Docker Compose,Docker Machine,Docker Swarm,我目前正在尝试使用Docker Swarm/Compose在每个集群机器上分别生成Redis的容器实例。我目前正在使用4台机器作为示例。使用关联标签的想法是确保两个redis实例不会被安排在同一台机器上 起初,以下方法奏效了 redis: image: redis environment: AFFINITY: com.myself.name!=redis labels: - "com.myself.name=redis" 但是,在强制某些容器停止以模拟崩溃、将它们推

我目前正在尝试使用Docker Swarm/Compose在每个集群机器上分别生成Redis的容器实例。我目前正在使用4台机器作为示例。使用关联标签的想法是确保两个redis实例不会被安排在同一台机器上

起初,以下方法奏效了

redis:
  image: redis
  environment:
    AFFINITY: com.myself.name!=redis
  labels:
    - "com.myself.name=redis"
但是,在强制某些容器停止以模拟崩溃、将它们推回、关闭所有容器,然后最终使用
docker compose scale redis=4
从头开始重新运行所有内容之后,我发现redis在同一台机器上运行两个容器,即使集群中有4个可用容器


我到底做错了什么?谢谢。

试试这个docker compose文件

redis:
  image: redis
  environment:
    - affinity:com.myself.name!=redis
  labels:
    - "com.myself.name=redis"
你应该试试这个:

redis:
  image: redis
  environment:
    - "affinity:container!=*redis*"
  labels:
    - "com.myself.name=redis"
这应该管用


请让我知道

我认为可能发生的情况是,一旦所有节点都获得了一个带有该标签的容器,所有节点都无效,因此它会将其作为约束删除。如果您
docker ps-a
看到所有节点都有一个容器吗?请注意,这些约束甚至会考虑停止的容器,因此您必须删除这些容器才能使其再次工作。我正在对文档进行改进,以实现这一点。