Подтвердить что ты не робот

Как ограничить пространство файловой системы Docker, доступное для контейнера (ов)

Общий сценарий состоит в том, что у нас есть кластер серверов, и мы хотим настроить виртуальные кластеры поверх этого с помощью Docker.

Для этого мы создали Dockerfiles для разных сервисов (Hadoop, Spark и т.д.).

Что касается службы Hadoop HDFS, тем не менее, мы имеем ситуацию, когда дисковое пространство, доступное для контейнеров докеров, равно дисковым пространствам, доступным для сервера. Мы хотим ограничить доступное дисковое пространство на основе каждого контейнера, чтобы мы могли динамически создавать дополнительный datanode с некоторым размером хранилища, чтобы внести вклад в файловую систему HDFS.

У нас возникла идея использовать файлы loopback, отформатированные с помощью ext4, и монтировать их в каталогах, которые мы используем в качестве томов в контейнерах докеров. Однако это означает большую потерю производительности.

Я нашел еще один вопрос о SO (Ограничить размер диска и пропускную способность контейнера Docker), но ответы почти 1,5 года, которые - относительно скорости развитие докеров - древнее.

В каком виде или в хранилище нам будет

  • Ограничение хранения на основе контейнера
  • Имеет почти голые характеристики
  • Не требуется перераспределение серверных дисков
4b9b3361

Ответ 1

Вы можете указать ограничения времени выполнения в памяти и ЦП, но не на диске.

Запрошена возможность задания ограничений на дисковое пространство (issue 12462, issue 3804), но еще не реализована, так как это зависит от базового драйвера файловой системы.

Эта функция будет добавлена ​​в какой-то момент, но не сразу. Намного сложнее добавить эту функцию прямо сейчас, потому что много кусков кода перемещается из одного места в другое. После выполнения этой работы гораздо проще реализовать эту функциональность.

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


Обновление августа 2016 года: как показано ниже, и в вопрос 3804 комментарий, PR 24771 и PR 24807 увидели, что они были объединены. docker run теперь позволяют задавать параметры драйвера хранилища на контейнер

$ docker run -it --storage-opt size=120G fedora /bin/bash

Этот (размер) позволит установить размер корневого контейнера на 120G во время создания.
Эта опция доступна только для драйверов devicemapper, btrfs, overlay2, windowsfilter и zfs.