使用 Docker 写入 sshfs 时权限被拒绝

问题描述 投票:0回答:1

我正在尝试为服务安装 sshfs。这是我的 Docker Stack 配置:

...
myservice:
...
    volumes:
      - "sshfs_volume:/home/app/web/media:rw"
...
volumes:
  sshfs_volume:
    driver: vieux/sshfs:latest
    driver_opts:
      sshcmd: "username@myhost:shared_storage"
      allow_other: ""
      password: "*****"

容器中的命令“ls -la /home/app/web/media”返回以下结果:

total 12
drwxrwxr-x    1 1000     1001          4096 Aug  9 21:55 .
drwxr-sr-x    1 app      app           4096 Aug  9 21:54 ..
-rw-r--r--    1 1000     1001             0 Aug  9 21:55 dump
-rw-r--r--    1 1000     1001             0 Aug  9 21:17 tmp.txt

这个文件是我在运行 docker 容器的同一主机上通过 sshfs 命令创建的。这意味着卷已正确安装(也许权限问题除外)。

问题是我无法在此卷的容器中写入文件。例如:

> touch /home/app/web/media/t2.txt

touch: /home/app/web/media/t2.txt: Permission denied

我尝试重新启动 Docker Daemon、删除卷并重新创建它们。结果是一样的,没有帮助。

docker docker-compose docker-swarm file-permissions sshfs
1个回答
0
投票

我通过向我的服务添加此参数来解决此问题:

user: "100:101"
并将此参数添加到卷: docker-stack 文件中的
uid: 100
gid: 101
。我的最终 docker-stack 文件:

...
myservice:
...
    user: "100:101"
    volumes:
      - "sshfs_volume:/home/app/web/media:rw"
...
volumes:
  sshfs_volume:
    driver: vieux/sshfs:latest
    driver_opts:
      sshcmd: "username@myhost:shared_storage"
      allow_other: ""
      default_permissions: ""
      reconnect: ""
      uid: 100
      gid: 101
      password: "*****"
© www.soinside.com 2019 - 2024. All rights reserved.