Создание ограничения размера тома в docker, которое обеспечивает ограничение - без предварительной загрузки всего огромного файла и только после этого сообщения о сбое загрузки? - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь установить ограничение размера диска контейнера в docker. В частности, у меня есть контейнер, который загружает данные, и я хочу, чтобы эти данные были ниже предела, который я могу ограничить заранее.

Пока что то, что я создал, работает на поверхностном уровне (предотвращает файл от фактического сохранения на компьютер) - однако я могу наблюдать, как контейнер выполняет свою работу, и я вижу, что загрузка завершена до 100%, прежде чем появится сообщение «Загрузка не удалась». Поэтому кажется, что он загружается во временный каталог, а затем проверяет размер файла перед его передачей в окончательное расположение. (или нет)

Это не решает полностью проблему, которую я пытался исправить, потому что, очевидно, загрузка потребляет много ресурсов. Я не уверен, что именно мне здесь не хватает ..

Это то, что создает приведенное выше поведение:

sudo zfs create new-pool/zfsvol1
sudo zfs set quota=1G new-pool/zfsvol1
docker run -e "TASK=download" -e "AZURE_SAS_TOKEN= ... " -v /newpool/zfsvol1:/data containerName azureFileToDownload

У меня такое же поведение при запуске контейнера в интерактивном режиме без томов и загрузки в контейнер. Я попытался изменить драйвер хранилища (внутри $ docker info) на zfs (из оверлея), и это не помогло. Я изучил плагины docker, но мне не показалось, что они решат проблему.

Все это выполняется внутри виртуальной машины Ubuntu; Я сделал пул zfs, чтобы все это проверить. Я почти уверен, что этого не должно быть, потому что это не очень полезно. Кто-нибудь знает, почему это происходит?

1 Ответ

0 голосов
/ 09 июля 2020

Хорошо, поэтому я действительно понял, что происходит, и, как @hmm, предположил, что проблема не из-за Docker. Место, куда она буферизовалась, было моей памятью перед загрузкой на диск, и это было проблемой. Похоже, что azcopy (команда копирования Azure) сначала загружается в память перед сохранением на диск, что совсем не здорово, но в этом случае ничего не поделаешь. Я думаю, что мой подход полностью работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...