我正在尝试为服务安装 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、删除卷并重新创建它们。结果是一样的,没有帮助。
我通过向我的服务添加此参数来解决此问题:
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: "*****"