2017-05-17 3 views
0

Pour un conteneur docker, vous pouvez définir des limites de processeur (par exemple, --cpu-shares) et des limites de mémoire (--memory) sur docker run. Il est également possible de définir la limite globale nproc pour les utilisateurs via --ulimit.Limitation des ressources d'un conteneur de docker pour des utilisateurs individuels

Supposons que deux utilisateurs différents exécutent des charges de travail dans un conteneur. Existe-t-il un moyen de définir des limites pour un utilisateur individuel à l'intérieur d'un conteneur docker spécifique uniquement (pas global du système)?

Par exemple avec --ulimit nproc=100, il n'est pas possible de spécifier qu'un utilisateur est autorisé à exécuter exactement un maximum de n processus à l'intérieur d'un conteneur docker. Par exemple, si un utilisateur exécute déjà 40 processus en dehors du conteneur, il est autorisé à exécuter 60 processus à l'intérieur du conteneur. Si vous définissez ulimit nproc=40 et 40 processus s'exécuteraient à l'extérieur du conteneur, il ne serait pas autorisé à démarrer un nouveau processus à l'intérieur du conteneur. Donc, je cherche un moyen d'imposer des restrictions de CPU, de mémoire et de numéro de processus sur la base de l'utilisateur pour un conteneur docker individuel (même si d'autres conteneurs docker sans cette restriction s'exécutent sur le même système). Le démarrage d'un conteneur docker pour chaque utilisateur n'est pas une option.

Répondre

0

vous pouvez lancer 2 différents commandes en utilisant le même myimage, par exemple

docker run -u user1 --cpu-shares=12... myimage

et

docker run -u user2 --cpu-shares=24...myimage

Il vous suffit de créer les 2 utilisateurs à la création de l'image

Vous ne savez pas si cela répond à votre question

+0

Cela démarre deux conteneurs, dans mon scénario il y a plusieurs utilisateurs dans un conteneur. –