2016-07-11 41 views
6

Se si utilizza VOLUME in un file di finestra mobile, viene creato un volume anonimo. C'è un modo per creare un volume con nome dal file docker?Come dichiarare un volume con nome in un file Docker?

Sto cercando l'equivalente di Dockerfile

docker run -v my-named-volume:/mnt/something repo/my-img 

Tutto quello che sono riuscito a ottenere attraverso un Dockerfile è l'equivalente di

docker run -v /mnt/something repo/my-img 

Vorrei pensare che non è solo supportato; tuttavia, the doc dice questo

L'istruzione VOLUME crea un punto di montaggio con il nome specificato e contrassegna come possesso volumi montati esternamente da host nativo o altri contenitori.

sembra implicare che c'è un modo per nominare il volume, ma non dice come

+2

Risposta breve, questo non è possibile * per disegno * Potresti trovare utile [questo] (https://github.com/moby/moby/issues/30647#issuecomment-276882545) post per capire perché – ira

risposta

2

Non è possibile. Penso che i documenti siano formulati forse in modo fuorviante.

3

Non è chiaro. Crea un punto di montaggio usando quel nome ma il percorso del file effettivo non usa quel nome. Se fai un docker inspect {container-name}, vedrai il nome: "Destination": "/mnt/something", e il luogo effettivo come: "Source": "/var/lib/docker/volumes/cb80c7802244dd3669eed8afb7d94b61366844d80677eb180fa12002db04ea7c/_data",.

Questo perché il Dockerfile non è legato ad un particolare host e non può essere sicuro che il percorso del volume host esista. È necessario farlo nell'istruzione run (o equivalente). È possibile utilizzare l'api o docker inspect per scoprire dove si trova il volume una volta creato il contenitore se è necessario utilizzare tali informazioni in uno script o simile.

La dichiarazione del volume nel file Docker assicura che i dati rimarranno e saranno disponibili per l'host, anche se la posizione non è preimpostata.