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
,这会导致我的应用程序停机,因此不是可接受的解决方案。
所以我的问题是:
这是不是 docker "bug" 挂载的文件夹再次可用时不重新连接?
我可以手动执行这个任务,而不必重新启动整个容器吗?
谢谢
我会尝试以下解决方案。
如果像这样将卷安装到 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
可能在主机上被删除,当断开连接并在连接恢复后创建一个新目录时。但是,容器为已删除的旧目录启动了 运行 目录映射。通过创建一个中间目录并映射到它,您可以避免这个映射问题。
所以我用 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
,这会导致我的应用程序停机,因此不是可接受的解决方案。
所以我的问题是:
这是不是 docker "bug" 挂载的文件夹再次可用时不重新连接?
我可以手动执行这个任务,而不必重新启动整个容器吗?
谢谢
我会尝试以下解决方案。
如果像这样将卷安装到 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
可能在主机上被删除,当断开连接并在连接恢复后创建一个新目录时。但是,容器为已删除的旧目录启动了 运行 目录映射。通过创建一个中间目录并映射到它,您可以避免这个映射问题。