我使用 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
需要以下步骤:
取消
user_allow_other
注释/etc/fuse.conf
卸载 FUSE 文件系统
重新挂载 FUSE 文件系统
sshfs -o allow_other user@....
(确保包含选项-o allow_other
)尝试再次启动容器
答案2
详细的分步说明,并附有外部参考:
- 创建 SSH 密钥并将其复制到远程服务器
只需要在我们第一次进行 SSHFS 挂载时执行此操作。以下是在 ubuntu 中如何执行此操作的一个例子。
- 通过 SSHFS 挂载远程文件系统
- 将 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
。