我目前正嘗試在每臺使用Docker Swarm/Compose的羣集機器上分別產生一個Redis容器實例。我正在使用4臺機器作爲例子。使用親和標籤的想法是確保兩個redis實例不會安排在同一臺機器上。Docker Swarm - 在每臺機器上安排容器
起初,以下工作。
redis:
image: redis
environment:
AFFINITY: com.myself.name!=redis
labels:
- "com.myself.name=redis"
然而迫使一些集裝箱停下來模擬碰撞,推他們回來,把所有容器關閉,然後最後再使用docker-compose scale redis=4
運行一切從開始後,我發現在同一臺機器上運行兩個容器Redis的連儘管羣集中有4個可用。
我究竟做錯了什麼?謝謝。
我認爲可能發生的是,一旦所有的節點得到與標籤的容器,沒有一個節點是有效的,因此拋棄它作爲一個約束。如果你的docker ps -a你看到所有的節點都有一個容器嗎?請注意,即使停止的容器也被考慮用於這些限制,因此您必須移除容器才能使其再次正常工作。我正在對文檔進行改進以解決此問題。 – dnephin