2016-01-09 33 views
9

Eseguo un server con 2 immagini Docker, uno esegue la costruzione e il packaging e crea così un sacco di cose di breve durata su/tmp.finestra mobile e "volumi volatili" ala/tmp

Mi piacerebbe che questo contenitore/tmp non sia sostenuto dal volume persistente (unione fs o volume) ma da usare l'host/tmp che a sua volta è un volume tmpfs e ideale per tali operazioni. Il salvataggio dell'accesso a un'unità normale avrà un sovraccarico e causerà l'accesso agli HDD (usura), preferirei cercare di rimanere nella RAM il più possibile.

Alcune opzioni sono:

  • Bind/tmp /:/tmp al processo finestra mobile. Non sembra molto sicuro e problematico se un altro processo accede a questa directory
  • Collega un volume a/tmp. Ciò significa che è sull'hard disk a meno che non riesca a spostarlo in/tmp. C'è ancora il problema di eliminare questo volume ogni volta che il contenitore si ferma, dal momento che Id preferisce una lavagna pulita.
  • Monta/tmp come tmpfs nel contenitore. Sembra l'opzione più sensata. Tranne che significherebbe modificare tutti i contenitori invece di usare quelli esistenti

Sono nuovo di Docker, forse mi manca qualcosa di ovvio.

Cerco un modo per specificare i volumi che possono o devono essere rilasciati dopo che il contenitore si è fermato. O addirittura vengono tenuti completamente nella RAM a meno che ciò non sia fattibile. E inoltre un modo semplice per montare/tmp come un contenitore.

risposta

19

Docker 1.10, che verrà rilasciato all'inizio di febbraio (i primi candidati dovrebbero essere disponibili alla fine della prossima settimana), vi consentiranno di farlo utilizzando l'opzione --tmpfs.

Ad esempio;

docker run -it --tmpfs /tmp ubuntu 

Per ulteriori informazioni, consultare la richiesta di pull per questa funzione; https://github.com/docker/docker/pull/13587

+0

suoni esattamente come quello che volevo. Ma leggerà la richiesta e 1.10 documenti prima di contrassegnarlo come risolto. Grazie –

+0

Sicuro! Se vuoi dargli un test ora (non per produzione, solo test); le build notturne da master possono essere ottenute tramite https://master.dockerproject.org – thaJeztah

2

È possibile montare un tmpfs partizione su /tmp posizione del contenitore se si esegue che il contenitore con l'opzione docker run--privileged:

docker run -it --privileged ubuntu bash -l 
[email protected]:/# mount -t tmpfs -o size=256M tmpfs /tmp 
[email protected]:/# mount 

...

tmpfs su/tmp tipo tmpfs (rw, relatime, size = 262144k)


Oppure si può creare un tmpfs mount sull'host finestra mobile e montarlo come volume nel contenitore:

# TMPDIR=$(mktemp -d) 
# mount -t tmpfs -o size=256M tmpfs $TMPDIR 
# docker run -it -v $TMPDIR:/tmp ubuntu bash -l 
[email protected]:/# mount | grep /tmp 

tmpfs su/tipo tmp tmpfs (rw, relatime, size = 262144k)

+0

Tranne che questo non funziona come easi quando l'immagine non accede come root, ma come utente senza nemmeno la possibilità di passare a root. L'immagine jenkins è un esempio. devi aggirarti per montare la porzione rw in un contenitore precedente o costruire (e mantenere) la tua immagine –

Problemi correlati