web-dev-qa-db-fra.com

Comment limiter l'espace du système de fichiers Docker disponible pour les conteneurs

Le scénario général est que nous avons un cluster de serveurs et que nous voulons configurer des clusters virtuels en plus de cela en utilisant Docker.

Pour cela, nous avons créé des Dockerfiles pour différents services (Hadoop, Spark etc.).

En ce qui concerne le service Hadoop HDFS cependant, nous avons la situation que l'espace disque disponible pour les conteneurs de docker est égal à l'espace disque disponible pour le serveur. Nous voulons limiter l'espace disque disponible sur une base par conteneur afin de pouvoir générer dynamiquement un mode de données supplémentaire avec une certaine taille de stockage pour contribuer au système de fichiers HDFS.

Nous avons eu l'idée d'utiliser des fichiers de bouclage au format ext4 et de les monter sur des répertoires que nous utilisons comme volumes dans des conteneurs Docker. Cependant, cela implique une perte de performances importante.

J'ai trouvé une autre question sur SO ( Limiter la taille du disque et la bande passante d'un conteneur Docker ) mais les réponses ont presque 1,5 ans qui - concernant la vitesse de développement de docker - est ancienne.

De quelle manière ou backend de stockage nous permettrait de

  • Limitez le stockage par conteneur
  • A des performances quasi nues
  • Ne nécessite pas de repartitionnement des lecteurs de serveur
16
Björn Jacobs

Vous pouvez spécifier contraintes d'exécution sur la mémoire et le CPU, mais pas sur l'espace disque.

La possibilité de définir des contraintes sur l'espace disque a été demandée ( problème 12462 , problème 3804 ), mais n'est pas encore implémentée, car cela dépend du pilote du système de fichiers sous-jacent.

Cette fonctionnalité va être ajoutée à un moment donné, mais pas tout de suite. Il est un peu plus difficile d'ajouter cette fonctionnalité en ce moment car beaucoup de morceaux de code se déplacent d'un endroit à un autre. Une fois ce travail terminé, il devrait être beaucoup plus facile d'implémenter cette fonctionnalité.

Veuillez garder à l'esprit que la prise en charge des quotas ne peut pas être ajoutée en tant que hack à devicemapper, elle doit être mise en œuvre pour autant de backends de stockage que possible, elle doit donc être mise en œuvre de manière à faciliter l'ajout de la prise en charge des quotas pour d'autres backends de stockage.


Mise à jour d'août 2016: comme indiqué ci-dessous, et dans commentaire du numéro 3804 , PR 24771 et PR 24807 ont vu puis fusionné. docker run permet désormais de définir les options du pilote de stockage par conteneur

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

Cette (taille) permettra de définir la taille des racines du conteneur à 120G au moment de la création.
Cette option n'est disponible que pour les pilotes de graphiques devicemapper, btrfs, overlay2, windowsfilter et zfs

38
VonC