web-dev-qa-db-fra.com

Limite des opérations parallèles Docker

Y a-t-il une limite au nombre de push/pulls Docker parallèles que vous pouvez faire?

Par exemple. si vous enfilez des commandes Docker pull/Push de telle sorte qu'elles tirent/poussent différentes images en même temps, quelle serait la limite supérieure du nombre de push/pulls parallèles

Ou bien

Sur un terminal, vous faites docker pull ubuntu sur un autre, vous faites docker pull httpd etc - quelle serait la limite que Docker prendrait en charge?

19
rmoh21

Le démon docker (dockerd) a deux drapeaux:

  --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)

La limite supérieure dépendra probablement du nombre de fichiers ouverts que vous autorisez pour le processus (ulimit -n). Il y aura des frais généraux d'autres poignées de fichier Docker, et je m'attends à ce que chaque push et pull ouvre plusieurs poignées, une pour la connexion à distance et une autre pour le stockage de fichiers local.

Pour aggraver la complication, chaque push et pull d'une image ouvrira plusieurs connexions, une par couche, jusqu'à la limite simultanée. Donc, si vous exécutez une douzaine de tirages simultanés, vous pouvez avoir 50 à 100 couches potentielles à tirer.

Bien que Docker permette d'augmenter ces limites, il existe une limite pratique où vous verrez des rendements décroissants sinon un retour négatif à l'ouverture de connexions plus simultanées. En supposant que la bande passante du registre distant est limitée, davantage de connexions fractionneront simplement cette bande passante et le docker lui-même attendra la fin de la toute première couche avant de commencer à décompresser cette transmission. De plus, tout puller ou push interrompu de docker perdra toutes les transmissions partielles d'une couche, de sorte que vous augmentez les données potentielles que vous auriez besoin de retransmettre avec plus de connexions simultanées.

Les limites par défaut sont bien adaptées à un environnement de développement, et si vous trouvez la nécessité de les ajuster, je vous recommande de mesurer l'amélioration des performances avant d'essayer de trouver le nombre maximum de sessions simultanées.

18
BMitch

Les options sont définies dans le fichier de configuration (SE basé sur Linux, il se trouve dans le chemin: /etc/docker/daemon.json et C:\ProgramData\docker\config\daemon.json sous Windows)

Ouvrez /etc/docker/daemon.json (s'il n'existe pas, créez-le)

Ajouter les valeurs (pour Push/pulls) et définir la limite d'opérations parallèles

{
    "max-concurrent-uploads": 1,
    "max-concurrent-downloads": 1
}

Redémarrez le démon: Sudo service docker restart

20
Daniel I. Cruz