Предполагая, что вы используете сервисы на Swarm и явно резервируете память на контейнер, ваша служба будет находиться в состоянии «выделенного», если вы попытаетесь обновить ее, чтобы зарезервировать больше памяти, чем у вас есть.
Например: docker service create --replicas 1 --name nginx --reserve-memory 256M nginx
удастся создать 1 контейнер с 256 Мбайт, зарезервированный для него (если у вас есть емкость на вашем Роме). Затем запустите docker service update --reserve-memory 300G nginx
и Докер будет:
- Shutdown существующий контейнер
- Попытка запланировать новый контейнер с запрашиваемых ресурсов
Если вы не имеете узел с 300GB доступный, обновленный сервис не может быть запланирован, и он будет находиться в состоянии Allocated
, поэтому ваша служба не будет работать в данный момент.
Планировщик продолжает проверять, поэтому, если ресурсы станут доступными или если вы запустите новую команду update
с более низким резервом, тогда она создаст контейнер в соответствии с запросом.