2016-09-19 5 views
0

Как работает докерный рой (1.12+) Обновления? Пример:Обновление докерных контейнеров на рое?

На одном узле у меня есть 2 контейнера, оба используют 4 ГБ памяти, всего 8 ГБ, что равно размеру узла.

Что делать, если я изменяю размер памяти одного контейнера, например. 6 ГБ? Будет ли рой:

  • переназначить контейнер на новый узел с 6 ГБ свободного места?
  • не удалось обновить?
  • продолжает работать оба контейнера, как раньше?

Я не могу разобраться в себе.

ответ

1

Предполагая, что вы используете сервисы на Swarm и явно резервируете память на контейнер, ваша служба будет находиться в состоянии «выделенного», если вы попытаетесь обновить ее, чтобы зарезервировать больше памяти, чем у вас есть.

Например: docker service create --replicas 1 --name nginx --reserve-memory 256M nginx удастся создать 1 контейнер с 256 Мбайт, зарезервированный для него (если у вас есть емкость на вашем Роме). Затем запустите docker service update --reserve-memory 300G nginx и Докер будет:

  1. Shutdown существующий контейнер
  2. Попытка запланировать новый контейнер с запрашиваемых ресурсов

Если вы не имеете узел с 300GB доступный, обновленный сервис не может быть запланирован, и он будет находиться в состоянии Allocated, поэтому ваша служба не будет работать в данный момент.

Планировщик продолжает проверять, поэтому, если ресурсы станут доступными или если вы запустите новую команду update с более низким резервом, тогда она создаст контейнер в соответствии с запросом.

Смежные вопросы