所以我有这个远程文件夹 /mnt/shared
装有 fuse 。它大部分可用,但不时会有一些断开连接。
实际挂载的文件夹 /mnt/shared
重新连接时再次可用。
问题是我将此文件夹放入 docker 卷中以使其可用于我的应用程序:/shared
.当我启动容器时,该卷可用。
但是如果两者之间发生断开连接,而 /mnt/shared
主机上的 repo 可用,/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:
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
容器内说明:
问题是挂载目录
/mnt/shared
可能会在主机上删除,当断开连接并在连接恢复后创建新目录时。但是,容器开始运行已删除的旧目录的目录映射。通过创建一个中间目录并映射到它,您可以避免此映射问题。
关于docker 音量超过 fuse : Transport endpoint is not connected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61612277/