Я просто хочу ограничить ресурсы некоторых контейнеров Docker в файле файле-докере. Причина проста: на хосте работает несколько приложений/служб. Поэтому я хочу избежать, чтобы один контейнер мог использовать, например. всю память, которая вредит другим контейнерам.
Из документов, которые я узнал, это можно сделать, используя resources
. Но это выше deploy
. Поэтому я должен написать свой файл для создания докеры, как в следующем примере:
php:
image: php:7-fpm
restart: always
volumes:
- ./www:/www
deploy:
resources:
limits:
memory: 512M
Это дало мне предупреждение:
ПРЕДУПРЕЖДЕНИЕ. Некоторые службы (php) используют ключ "deploy", который будет игнорироваться. Compose не поддерживает развертывание конфигурации - используйте
docker stack deploy
для развертывания в рой.
И это кажется правдой: docker stats
подтверждает, что контейнер может использовать весь ram от хоста.
В документации написано:
Укажите конфигурацию, связанную с развертыванием и запуском служб. Это только вступает в силу при развертывании в рой с развертыванием стека докеров и игнорируется приложением docker-compose up и docker-compose.
Но мне не нужна кластеризация. По-видимому, нет другого способа ограничить ресурсы, используя файл-докер-композитор. Почему невозможно указать какой-то тэг memory
, такой как start-parameter в docker run
?
Пример: docker run --memory=1g $imageName
Это отлично работает для одного контейнера. Но я не могу использовать это (по крайней мере, не нарушая чистое разделение проблем), так как мне нужно использовать два разных контейнера.
Изменить: временное решение Temp
Я узнал, что я могу использовать mem_limit
непосредственно после понижения с версии 3 до версии 2 (размещение version: '2'
сверху). Но в настоящее время мы находимся на версии 3.1, поэтому это не долгое решение. И документы говорят, что deploy.resources
является новой заменой для тегов v2, таких как mem_limit
.
Когда-нибудь, версия 2 устарела. Таким образом, управление ресурсами больше не возможно с последними версиями, по крайней мере, без роя? Кажется, ухудшение для меня, не может верить в это...