【问题标题】:docker volume over fuse : Transport endpoint is not connecteddocker volume over fuse:传输端点未连接
【发布时间】:2020-08-20 01:30:21
【问题描述】:

所以我有这个远程文件夹/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 “错误”,当它再次可用时不会重新连接到已安装的文件夹?

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

谢谢

【问题讨论】:

  • 我会尝试降低您使用的解决方案的最大会话数/连接数。

标签: docker docker-volume fuse


【解决方案1】:

我会尝试以下解决方案。

如果您像这样将卷挂载到 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可能在主机上被删除,当断开连接并在连接恢复后创建一个新目录时。但是,容器开始使用已删除的旧目录的目录映射运行。通过创建一个中间目录并映射到它,您可以避免这个映射问题。

【讨论】:

  • 你有解释为什么会这样吗?
猜你喜欢
  • 2019-03-15
  • 2013-04-06
  • 2012-12-10
  • 2018-11-06
  • 2012-12-30
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多