我创建了一个叉的LinuxServer.io 的 docker-transmission 镜像,增加对Google云端存储的支持。
我用的是Ernest (chiaen) 的 docker-gcsfuse项目构建gcsfuse,即提取他的Dockerfile并添加到我自己的一个.gcsfuse 是使用golang:alpine
图像构建的。
镜像构建成功(包括gcsfuse
;Dockerfile 指示只需将 gcsfuse 复制到/usr/local/bin
,我检查了可执行文件位置;此外,/dev/fuse 已从主机端正确公开)。但是,gcsfuse
拒绝挂载,并且日志输出Mount: stat /donwloads: no such file or directory
,如果目录/downloads
确实存在,并且已经设置了正确的权限(设置在/etc/con-init.d/20-config)。我甚至尝试从 shell 中运行,但仍然失败。
为了使 gcsfuse 在我的(Alpine)Docker 镜像中工作,是否缺少包或参数?
如果您想要复制,您可以按照我的 repo 中 README.md 中的说明制作您自己的图像本地副本(您需要将您的 json 密钥上传到 VM)(amitie10g/docker-transmission
也可以在 Docker Hub 上找到)。
日志可用这里。
使用的虚拟机映像:
- 开发:Ubuntu 18.04
- 目标:容器优化操作系统 75-12105.40.0 beta
用于构建的Docker镜像:
- lsiobase/alpine:3.9
- golang:高山
提前致谢。
答案1
我通过构建mount.gcsfuse
助手并填充/etc/fstab
文件来解决这个问题/etc/cont-init.d/20.config
:
echo "$BUCKET /downloads gcsfuse rw,user,noauto,key_file=/config/gcsfuse-key.json" >> /etc/fstab
然后运行mount.gcsfuse
:
s6-setuidgid abc mount.gcsfuse $BUCKET /downloads