将 SSHFS 卷挂载到 Docker 实例中

将 SSHFS 卷挂载到 Docker 实例中

我使用 SSHFS 在我的主机上挂载远程文件系统,并且希望能够从 Docker 容器内部访问它。

我挂载远程文件系统

sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) user@remote:directory /path/to/sshfs

并且,使用 Docker 时,根据我的使用情况,我会收到以下错误--mount

docker run  -it -v /path/to/sshfs:/target myimage bash
docker: Error response from daemon: error while creating mount source path '/path/to/sshfs': mkdir /path/to/sshfs: file exists.

或者-v

docker run -it  --mount src=/path/to/sshfs,target=/target,type=bind  myimage bash
docker: Error response from daemon: invalid mount config for type "bind": bind source path does not exist: /path/to/sshfs.
See 'docker run --help'

是否可以将 sshfs 挂载点挂载到容器中?

答案1

需要以下步骤:

  1. 取消user_allow_other注释/etc/fuse.conf

  2. 卸载 FUSE 文件系统

  3. 重新挂载 FUSE 文件系统sshfs -o allow_other user@....(确保包含选项-o allow_other

  4. 尝试再次启动容器

答案2

详细的分步说明,并附有外部参考:

  1. 创建 SSH 密钥并将其复制到远程服务器

只需要在我们第一次进行 SSHFS 挂载时执行此操作。以下是在 ubuntu 中如何执行此操作的一个例子

  1. 通过 SSHFS 挂载远程文件系统

按照本教程中的步骤操作

  1. 将 SSHFS 卷挂载到 Docker 实例中

docker run -it -v /path/to/sshfs:/target myimage bash

答案3

我遇到了同样的问题,但无法使用“allow_other”,因为我没有 root 权限。但我发现,你可以挂载挂载点的父级。

因此,您的示例对我来说应该像这样工作:

docker run  -it -v /path/to:/target myimage bash

当然,它不是可用,/target而只能用作/target/sshfs

相关内容