docker 音量超过 fuse : Transport endpoint is not connected

标签 docker docker-volume fuse

所以我有这个远程文件夹 /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:

    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/

    相关文章:

    windows - 如何让 kubernetes 在 docker for desktop 在 windows 中运行

    Docker:基础镜像

    php - 重建后文件更改未反射(reflect)在Docker镜像中

    docker - Docker卷未显示Windows 10上正在运行的linux容器

    java - sonarqube 的 docker 镜像可以使用 env 来配置任何设置吗?

    docker - 用卷保存docker日志文件会导致权限被拒绝

    linux - FUSE 文件系统的并行网络 I/O

    python - FUSE python 问题

    c - execve() 传递的未知 open() 标志

    rest - 在不同的 Docker 容器中运行的 Spring Boot 应用程序拒绝连接