Cela se produit car le volume utilise la private
propagation de montage. Cela signifie qu'une fois le montage effectué, tous les changements qui se produisent du côté origine (par exemple, le côté "hôte" dans le cas de Docker) ne seront pas visibles sous le montage.
Il existe deux façons de gérer cela:
Faites d'abord le montage NFS, puis démarrez le conteneur. Le montage se propage au conteneur, mais comme auparavant, aucune modification du montage ne sera visible par le conteneur (y compris les démontages).
Utilisez la propagation "esclave". Cela signifie qu'une fois le montage créé, tout changement du côté d'origine (hôte docker) pourra être vu dans la cible (dans le conteneur). S'il vous arrive de faire des montages imbriqués, vous voudrez utiliser rslave
( r
pour récursif).
Il y a aussi une propagation "partagée". Ce mode apporterait des modifications au point de montage de l'intérieur du conteneur se propager à l'hôte, ainsi que l'inverse. Étant donné que votre utilisateur n'aurait même pas les privilèges pour effectuer de telles modifications (sauf si vous ajoutez CAP_SYS_ADMIN), ce n'est probablement pas ce que vous voulez.
Vous pouvez définir le mode de propagation lors de la création du montage comme suit:
$ docker run -v /foo:/bar:private
L'autre alternative serait d'utiliser un volume plutôt qu'un montage hôte. Vous pouvez le faire comme ceci:
$ docker volume create \
--name mynfs \
--opt type=nfs \
--opt device=:<nfs export path> \
--opt o=addr=<nfs host> \
mynfs
$ docker run -it -v mynfs:/foo alpine sh
Cela vous assurera de toujours monter dans le conteneur pour vous, ne dépend pas de la configuration de l'hôte d'une manière spécifique ou de la propagation du montage.
note : le :
devant du chemin du périphérique est requis, juste quelque chose de bizarre sur le module du noyau nfs.
Remarque : Docker ne résout pas actuellement à <nfs host>
partir d'un nom DNS (il le fera en 1.13), vous devrez donc fournir l'adresse IP ici.
Plus de détails sur les montages "sous-arborescence partagée": https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt