docker Volume over fusion:传输端点未连接

Aug*_*ger 8 fuse docker docker-volume

所以我/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
Run Code Online (Sandbox Code Playgroud)

为了让它再次工作,我找到的唯一解决方案是docker restart e313ec554814,这会给我的应用程序带来停机时间,因此不是一个可接受的解决方案。

所以我的问题是:

  1. 这是否是一个泊坞窗“错误”,当它再次可用时不会重新连接到已安装的文件夹?

  2. 我可以手动执行此任务,而无需重新启动整个容器吗?

谢谢

ofi*_*ule 3

我会尝试以下解决方案。

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

docker run -v /mnt/shared:/shared my-image
Run Code Online (Sandbox Code Playgroud)

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

docker run -v /mnt/base/shared:/base/shared my-image
Run Code Online (Sandbox Code Playgroud)

我还将调整我的代码以引用新路径或创建从容器内部/base/shared/shared容器内部的链接

解释:

问题是,/mnt/shared当连接断开并且连接恢复后创建新目录时,挂载的目录可能会在主机上被删除。但是,容器开始使用已删除的旧目录的目录映射来运行。通过创建中间目录并映射到它,您可以避免此映射问题。