docker volume over fuse:未连接传输端点

docker volume over fuse : Transport endpoint is not connected

所以我用 fuse 安装了这个远程文件夹 /mnt/shared。基本上是可用的,只是偶尔会出现一些断开连接的情况。

实际安装的文件夹 /mnt/shared 在重新连接时再次可用。

问题是我将此文件夹放入 docker 卷以供我的应用程序使用:/shared。当我启动容器时,卷可用。

但是如果在两者之间发生断开连接,虽然主机上的 /mnt/shared 存储库可用,但无法从容器访问 /shared 文件夹,我得到:

user@machine:~$ docker exec -it e313ec554814 bash
root@e313ec554814:/app# ls /shared 
ls: cannot access '/shared': Transport endpoint is not connected

为了让它再次运行,我找到的唯一解决方案是 docker restart e313ec554814,这会导致我的应用程序停机,因此不是可接受的解决方案。

所以我的问题是:

  1. 这是不是 docker "bug" 挂载的文件夹再次可用时不重新连接?

  2. 我可以手动执行这个任务,而不必重新启动整个容器吗?

谢谢

我会尝试以下解决方案。

如果像这样将卷安装到 docker:

docker run -v /mnt/shared:/shared my-image

我会创建一个中间目录 /mnt/base/shared 并将其挂载到 docker,如下所示:

docker run -v /mnt/base/shared:/base/shared my-image

我还将调整我的代码以引用新路径或在容器

中创建从 /base/shared/shared 的 link

解释:

问题是挂载的目录 /mnt/shared 可能在主机上被删除,当断开连接并在连接恢复后创建一个新目录时。但是,容器为已删除的旧目录启动了 运行 目录映射。通过创建一个中间目录并映射到它,您可以避免这个映射问题。