Docker Swarm - 在每台机器上调度容器
Docker Swarm - Schedule container on each machine
我目前正在尝试使用 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 撰写文件
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 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 撰写文件
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"
这应该行得通!
请告诉我