2016-03-19 35 views
10

Diversi articoli sono stati estremamente utili per comprendere il volume e la gestione dei dati di Docker. Questi due in particolare sono eccellenti:Montare il volume host della docker ma sovrascrivere con il contenuto del contenitore

Tuttavia, non sono sicuro se quello che sto cercando è discusso. Ecco la mia comprensione:

  1. Quando si esegue docker run -v /host/something:/container/something i file host sovrascrivono (ma non sovrascrivono) i file contenitore nella posizione specificata. Il contenitore non avrà più accesso ai file precedenti della posizione, ma avrà solo accesso ai file host in quella posizione.
  2. Quando si definisce un volume in Dockerfile, altri contenitori possono condividere i contenuti creati dall'immagine/dal contenitore.
  3. L'host può anche visualizzare/modificare un volume di Dockerfile, ma solo dopo aver rilevato il punto di montaggio reale utilizzando la finestra mobile per ispezionare. (Di solito da qualche parte come /var/lib/docker/vfs/dir/cde167197ccc3e138a14f1a4f7c....). Tuttavia, questo è peloso quando Docker deve essere eseguito all'interno di una VM virtuale.

La mia domanda è semplice. Come posso invertire l'overlay in modo che quando si monta un volume, i file contenitore abbiano la precedenza sui miei file host?

Desidero specificare un punto di montaggio in cui sia possibile accedere facilmente al filesystem del contenitore. Ma sembra che nessuno stia facendo questa domanda. Capisco che posso usare un contenitore di dati per questo, o posso usare docker inspect per trovare il mountpoint, ma in questo caso nessuna soluzione è una buona soluzione.

+0

La tua domanda è contro la tua regola numero 1 –

+1

@warmoverflow Mi scuso per il linguaggio vago. L'elenco numerato serve solo per enumerare ciò di cui già conosco Docker. Non sono regole che voglio rispettare. E 'incluso per farti sapere che ho fatto due diligence e sto cercando aiuto. –

risposta

6

La finestra di dialogo da 1 a 10+ per condividere i file passerebbe attraverso un volume, come in docker volume create.
Ciò significa che non è necessario un contenitore dedicato a un volume di dati, è possibile utilizzare direttamente un volume di dati.

In questo modo, è possibile condividere e montare quel volume in un contenitore che manterrà quindi il suo contenuto in detto volume.
Questo è più in linea con il funzionamento di un contenitore: isolando la memoria, cpu e file system dall'host: ecco perché non è possibile "montare un volume e avere i file del contenitore hanno la precedenza sul file host": rompere l'isolamento del contenitore e esporre all'host il suo contenuto.

Problemi correlati