Dies liegt daran, dass das Volume die private
Mount-Weitergabe verwendet. Dies bedeutet, dass nach dem Mount keine Änderungen auf der Ursprungsseite (z. B. auf der "Host" -Seite im Fall von Docker) unter dem Mount sichtbar sind.
Es gibt verschiedene Möglichkeiten, damit umzugehen:
Führen Sie zuerst die NFS-Bereitstellung durch und starten Sie dann den Container. Die Bereitstellung wird auf den Container übertragen, jedoch werden Änderungen an der Bereitstellung nach wie vor vom Container nicht gesehen (einschließlich Aufheben der Bereitstellung).
Verwenden Sie die "Slave" -Verbreitung. Dies bedeutet, dass nach dem Erstellen des Mount alle Änderungen auf der Ursprungsseite (Docker-Host) im Ziel (im Container) angezeigt werden können. Wenn Sie zufällig verschachtelte Bereitstellungen durchführen, sollten Sie diese verwenden rslave
( r
für rekursiv).
Es gibt auch eine "gemeinsame" Verbreitung. In diesem Modus werden Änderungen am Mountpunkt innerhalb des Containers vorgenommen, die auf den Host übertragen werden, und umgekehrt. Da Ihr Benutzer nicht einmal die Berechtigung hätte, solche Änderungen vorzunehmen (es sei denn, Sie fügen CAP_SYS_ADMIN hinzu), ist dies wahrscheinlich nicht das, was Sie möchten.
Sie können den Ausbreitungsmodus beim Erstellen des Mount wie folgt einstellen:
$ docker run -v /foo:/bar:private
Die andere Alternative wäre die Verwendung eines Volumes anstelle eines Host-Mount. Sie können dies folgendermaßen tun:
$ 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
Dadurch wird sichergestellt, dass die Bereitstellung immer im Container für Sie erfolgt. Sie müssen den Host nicht auf eine bestimmte Weise einrichten oder sich mit der Weitergabe von Bereitstellungen befassen.
Hinweis : Der :
Pfad an der Vorderseite des Gerätepfads ist erforderlich, nur etwas Seltsames am nfs-Kernelmodul.
Hinweis : Docker wird derzeit nicht <nfs host>
von einem DNS-Namen aufgelöst (dies wird in 1.13 der Fall sein ), daher müssen Sie hier die IP-Adresse angeben.
Weitere Details zu "Shared Subtree" -Mounts: https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt