Ответ 1
Демон docker (dockerd) имеет два флага:
--max-concurrent-downloads int Set the max concurrent downloads for each pull
(default 3)
--max-concurrent-uploads int Set the max concurrent uploads for each push
(default 5)
Верхний предел, скорее всего, будет зависеть от количества открытых файлов, которые вы разрешаете для процесса (ulimit -n
). Там будут некоторые накладные расходы на другие файлы файлов докеров, и я ожидаю, что каждый push и pull откроет несколько дескрипторов, один для удаленного подключения и другой для локального хранилища файлов.
Чтобы усложнить это, каждое нажатие и вытягивание изображения откроет несколько соединений, по одному на каждый уровень, до параллельного предела. Поэтому, если вы запускаете дюжину одновременных выдержек, у вас может быть 50-100 потенциальных уровней.
В то время как докер позволяет увеличить эти ограничения, существует практический предел, в котором вы увидите уменьшение прибыли, если не отрицательный возврат к открытию более параллельных подключений. Предполагая, что ширина полосы пропускания в удаленном реестре ограничена, большее количество подключений будет просто разделять эту полосу пропускания, и сам докер будет ждать завершения самого первого уровня до того, как он начнет распаковывать эту передачу. Также любое прерывание или нажатие докеры потеряет любые частичные передачи слоя, поэтому вы увеличите потенциальные данные, которые вам нужны для повторной передачи с использованием более параллельных соединений.
Пределы по умолчанию хорошо подходят для среды разработки, и если вы обнаружите необходимость их корректировки, я бы рекомендовал измерить улучшение производительности, прежде чем пытаться найти максимальное количество параллельных сеансов.