Docker 挂载远程持久化存储 rw

问题描述

我正在尝试在使用家里的 pi 作为外部存储卷的 VPS 上运行 nextcloud。我在他们之间设置了wireguard,并尝试了各种设置方法,我怀疑我从根本上误解了这个设置。

  1. 首先我尝试在 pi 上运行 vsftpd。从我的 vps,我可以ftp user@pi-ip-addr、验证、列出目录上传文件,其中 pi-ip-addr 是wireguard 分配给它的 IP 地址。从 nextcloud 界面,我能够将该目录添加为外部存储并查看那里的文件,但禁止写入访问。

  2. 然后我尝试使用 samba 和 sshfs 成功地通过 r/w 访问将远程存储挂载到 pi sshfs user@pi-ip-addr:share /opt/nextcloud/extstore 上。安装后,我首先尝试在 docker-compose.yaml 中添加一个

services:
  app:
    volumes:
      - /opt/nextcloud/extstore:/extstore

然后在 nextcloud 中添加 /extstore 作为本地外部存储。如果我在使用 sshfs 挂载文件夹之前启动了 docker,它似乎可以正常运行。我可以从 vps shell 添加文件并在 nextCould 中查看它们,我可以通过 nextcloud 上传文件并在 shell 中查看它们。但是如果我先挂载pi存储,启动nextcloud时报错

ERROR: for nextcloud_app_1  Cannot start service app: error while creating mount source path '/opt/nextcloud/extstore': mkdir /opt/nextcloud/extstore: file exists

ERROR: for app  Cannot start service app: error while creating mount source path '/opt/nextcloud/extstore': mkdir /opt/nextcloud/extstore: file exists
ERROR: Encountered errors while bringing up the project.
  1. 我尝试的最后一种方法是创建一个 vieux/sshfs 卷
docker volume create -d vieux/sshfs -o sshcmd=user@pi-ip-addr:share -o password=#### extstore

然后测试它:docker run -it -v extstore:/data busyBox ls /data,它返回

docker: Error response from daemon: error while mounting volume '': VolumeDriver.Mount: sshfs command execute Failed: exit status 1 (read: Connection reset by peer).
ERRO[0031] error waiting for container: context canceled 

我怀疑对于 (1) 和 (3),docker 网络规则存在干扰,可能与通过 wireguard 运行它相结合?也许对于 (2) docker 在本地目录中创建一个不兼容(或配置不正确)的卷时会做些什么,因为它被用作 sshfs/samba 的挂载点,可能也是出于安全原因?对原因的任何解释和/或如何实现我所追求的建议都会非常好。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...