2015-12-01 5 views
4

В настоящее время я пытаюсь создать экземпляр контейнера Redis отдельно на каждой машине кластера, используя Docker Swarm/Compose. В настоящее время я использую 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

Попробуйте этот Docker файл создания сообщения

redis: 
    image: redis 
    environment: 
    - affinity:com.myself.name!=redis 
    labels: 
    - "com.myself.name=redis" 
Смежные вопросы