Come montare o collegare simbolicamente un singolo file in un contenitore Docker

0
161

Il volume Docker e i montaggi di associazione vengono utilizzati per associare le directory sul sistema operativo host a posizioni nel file system del contenitore. Sebbene siano comunemente usati per montare intere directory, puoi anche usarli per collegare simbolicamente singoli file.

Collegamento simbolico a Docker dall'host

h2>

Il montaggio di intere directory funziona bene se stai sovrascrivendo un intero elenco di file di configurazione, ma se vuoi sceglierne solo uno, dovrai utilizzare un montaggio a file singolo. Questo è utile anche se vuoi avere più montaggi nella stessa directory, ma da posizioni diverse. Funziona in modo molto simile a un normale collegamento simbolico Linux, tranne per il fatto che è gestito tramite Docker e attraversa il ponte tra l'host e il filesystem del contenitore.

I normali montaggi del volume Docker richiedono il montaggio in una directory di destinazione, all'interno della quale il volume sarà collegato.

docker volume create nginx-config docker run -d –name devtest –mount source=nginx-config,target=/etc/nginx nginx:latest

Tuttavia, con i bind mount, l'origine può essere una directory o file sull'host. I montaggi del volume non lo supportano e, anche se di solito si desidera utilizzarli, è necessario utilizzare i montaggi di associazione di livello inferiore se si desidera montare singoli file.

Per farlo, è possibile eseguire il container con il flag –mount type=bind , che supporta i singoli file se specifichi il percorso:

docker run -it –mount type=bind,source=/path/file.cfg,target=/etc /example/file.cfg nginx sh Advertisement

In alternativa, se vuoi davvero usare i volumi Docker, puoi creare un volume con solo il file che intendi montare, montarlo in una directory temporanea nel contenitore , quindi creare un collegamento simbolico effettivo all'interno del contenitore (nello script di build di Docker) che si collegherebbe alla directory temporanea con il file. Questa è probabilmente una soluzione peggiore rispetto a un montaggio di bind in generale, ma ti consente di archiviare i dati tramite l'API del volume Docker.