7

docker コンテナー (ベース イメージ centos7) 内で gcsfuse を使用していますが、マウントされたディレクトリの読み取りまたは書き込みができません。

次のように 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: reading directory /gcloud/: Input/output error total 0

gcsfuse は次のようなデバッグ情報を出力します。

ヒューズ: 2016/01/14 01:33:41.110260 *fuseops.ReadDirOp エラー: readAllEntries: ReadEntries: ListObjects: Get 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 を実行しています: docker run -p 3000:3000 \ <br> --privileged \ --cap-add SYS_ADMIN \ --device /dev/fuse \ --name gcsfuseTest \ gcsfuseImage

--cap-add SYS_ADMIN と --device /dev/fuse が何をもたらすのか、私は 100% 確実ではありません。fuse on docker を使用してマウントしている他のユーザーに基づいてそれらを入れました。

4

1 に答える 1

17

次のように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 (Cloud Storage JSON API) が有効になっていません。Google Developers Console を使用して構成を更新してください。"

Google Developers Console 内でこの API を有効にすると、数分後に vuala が機能しました。

于 2016-01-14T04:07:13.097 に答える