2015-10-08 15 views
11

Lo scenario generale è che abbiamo un cluster di server e vogliamo configurare dei cluster virtuali su di esso utilizzando Docker.Come limitare lo spazio del filesystem Docker disponibile per i contenitori

Per questo abbiamo creato Dockerfiles per servizi diversi (Hadoop, Spark ecc.).

Per quanto riguarda il servizio HDFS di Hadoop, tuttavia, si ha la situazione in cui lo spazio su disco disponibile per i contenitori della finestra mobile è uguale allo spazio su disco disponibile per il server. Vogliamo limitare lo spazio su disco disponibile su base per contenitore in modo da poter generare dinamicamente un datanode aggiuntivo con alcune dimensioni di archiviazione per contribuire al filesystem HDFS.

Abbiamo avuto l'idea di utilizzare file di loopback formattati con ext4 e montarli su directory che utilizziamo come volumi nei contenitori di finestra mobile. Tuttavia, questo implica una grande perdita di prestazioni.

Ho trovato un'altra domanda su SO (Limit disk size and bandwidth of a Docker container) ma le risposte sono quasi 1,5 anni che - per quanto riguarda la velocità di sviluppo della finestra mobile - è antica.

Quale modo o backend di memorizzazione ci permetterebbero di

  • limite di archiviazione su una base per-contenitore
  • Ha vicino bare-metal prestazioni
  • Non richiede ripartizionamento del server spinge

risposta

22

È possibile specificare runtime constraints in memoria e CPU, ma non lo spazio su disco.

È stata richiesta la possibilità di impostare i vincoli sullo spazio su disco (issue 12462, issue 3804), ma non è ancora stata implementata, in quanto dipende dal driver del filesystem sottostante.

Questa funzione verrà aggiunta a un certo punto, ma non immediatamente. È un po 'più difficile aggiungere questa funzionalità in questo momento perché molti pezzi di codice si stanno spostando da un posto all'altro. Al termine di questo lavoro, dovrebbe essere molto più semplice implementare questa funzionalità.

Si prega di tenere presente che il supporto di quota non può essere aggiunto come un hack per devicemapper, deve essere implementato per il maggior numero di backend di archiviazione possibile, quindi deve essere implementato in un modo che rende facile aggiungere supporto di quota per altri back-end di archiviazione.


Aggiornamento agosto 2016: come mostrato di seguito, e in issue 3804 comment, PR 24771 e PR 24807 ho visto state poi fuse. docker run ora permettono di impostare le opzioni di driver di archiviazione per contenitore

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

Questo (dimensione) permetterà di impostare la dimensione rootfs contenitore a 120G al momento della creazione.
Questa opzione è disponibile solo per il devicemapper, btrfs, overlay2, windowsfilter e grafico ZFS driver

+0

Poiché non v'è ora la possibilità di abilitare questa, che cosa fa quando è piena?Ho appena provato a creare un file gigantesco e, una volta pieno, il contenitore non ha potuto fare nulla (nemmeno ls) e 'docker rm myimg' non avrebbe funzionato affatto. – Telokis

+0

@Ninetainedo Strano. Quale versione di finestra mobile stai usando, su quale sistema operativo? – VonC

+0

Se non ti dispiace guardare Github, [qui] (https://github.com/docker/docker/issues/31931) il problema completo che ho inviato. – Telokis

Problemi correlati