2015-12-01 82 views
4

我目前正嘗試在每臺使用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個可用。

我究竟做錯了什麼?謝謝。

+0

我認爲可能發生的是,一旦所有的節點得到與標籤的容器,沒有一個節點是有效的,因此拋棄它作爲一個約束。如果你的docker ps -a你看到所有的節點都有一個容器嗎?請注意,即使停止的容器也被考慮用於這些限制,因此您必須移除容器才能使其再次正常工作。我正在對文檔進行改進以解決此問題。 – dnephin

回答

4

你應該試試這個:

redis: 
    image: redis 
    environment: 
    - "affinity:container!=*redis*" 
    labels: 
    - "com.myself.name=redis" 

這應該工作!

請讓我知道

0

試試這個搬運工撰寫文件

redis: 
    image: redis 
    environment: 
    - affinity:com.myself.name!=redis 
    labels: 
    - "com.myself.name=redis" 
相關問題