我在docker容器中使用gcsfuse(基本映像centos7),无法读取或写入已挂载的目录。
我正在使用gcsfuse安装目录,如下所示:
[root@6c24c3a6cc28 /]# gcsfuse --foreground --key-file=/src/gcloud_service_account.json my-bucket /gcloud/
Using mount point: /gcloud
Opening GCS connection...
Opening bucket...
Mounting file system...
File system has been successfully mounted.
当我尝试读取或写入已安装的目录时,出现此错误:
[root @ 6c24c3a6cc28 /] #ls -la / gcloud /
ls:读取目录/ gcloud /:输入/输出错误
总计0
gcsfuse打印出调试信息说:
fuse:2016/01/14 01:33:41.110260 * fuseops.ReadDirOp错误:readAllEntries:ReadEntries:ListObjects:获取https://www.googleapis.com/storage/v1/b/my-bucket/o? delimiter =%2F& projection = full:私钥应该是PEM或普通PKSC1或PKCS8;解析错误:asn1:结构错误:标记不匹配(16 vs {class:1 tag:27 length:123 isCompound:true}){optional:false explicit:false application:false defaultValue:tag:stringType:0 timeType: 0 set:false omitEmpty:false} pkcs1PrivateKey @ 2
我正在运行这样的码头:
docker run -p 3000:3000 \
- 特权
--cap-add SYS_ADMIN \
- 设备/开发/保险丝
--name gcsfuseTest \
gcsfuseImage
我不是100%肯定--cap-add SYS_ADMIN和--device / dev / fuse得到我。我把它们放在其他使用底座上的保险丝安装的用户的基础上。
答案 0 :(得分:13)
我可以通过在运行gcsfuse时打开一些调试标志来解决这个问题:
gcsfuse --foreground --debug_gcs --debug_http --debug_fuse --debug_invariants --key-file=/src/gcloud_service_account.json dev-my-bucket /gcloud
这返回了很多信息,以及:
“code”:403, “message”:“未配置访问权限。您的项目未启用API(云存储JSON API)。请使用Google Developers Console更新您的配置。”
我在Google Devlopers Console中启用了这个API,然后在几分钟之后,vuala就可以了。