2016-01-14 12 views
5

Ich benutze Gcsfuse innerhalb eines Docker-Container (Base Image Centos7) und bin nicht in der Lage zu lesen oder in das gemountete Verzeichnis zu schreiben.gcsfuse gibt einen Input/Output-Fehler beim Lesen oder Schreiben in ein eingehängtes Verzeichnis in Docker

Ich bin das Verzeichnis mit gcsfuse wie diese Montage:

[[email protected] /]# 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. 

Wenn ich versuche, und lesen oder in das eingehängte Verzeichnis schreiben, erhalte ich diese Fehlermeldung:
[root @ 6c24c3a6cc28 /] # ls -la/gcloud/ ls: Lesen Verzeichnis/gcloud /: Eingabe/Ausgabe-Fehler gesamt 0

gcsfuse druckt Debug-Informationen sagen:

Sicherung: 2016.01.14 01: 33: 41,11026 0 * fusops.ReadDirOp Fehler: ReadAllEntries: ReadEntries: ListObjects: Get https://www.googleapis.com/storage/v1/b/my-bucket/o? delimiter =% 2F & projektion = voll: privater Schlüssel sollte eine PEM oder einfache PKSC1 oder PKCS8 sein; Parse-Fehler: asn1: Strukturfehler: Tags stimmen nicht überein (16 vs {class: 1 tag: 27 length: 123 isCompound: true}) {optional: false explizit: false application: false defaultValue: tag: stringType: 0 timeType: 0 Set: false omitEmpty: false} pkcs1PrivateKey @ 2

ich bin mit docker wie folgt aus: docker run -P 3000: 3000 \
--privileged \ --cap-add SYS_ADMIN \ --device/dev/Sicherung \ --name gcsfuseTest \ gcsfuseImage

ich bin nicht 100% sicher, was --cap-add SYS_ADMIN und --device/dev/fuse mir. Ich stelle sie basierend auf anderen Benutzern ein, die mit der Sicherung am Andockfenster arbeiten.

Antwort

12

Ich konnte dies durch Einschalten einige Debug-Flags, um herauszufinden, wenn gcsfuse wie folgt ausgeführt werden:

gcsfuse --foreground --debug_gcs --debug_http --debug_fuse --debug_invariants --key-file=/src/gcloud_service_account.json dev-my-bucket /gcloud

Dies ergab eine Menge Informationen, zusammen mit diesem:

"code" : 403, "message": "Zugriff nicht konfiguriert. Die API (Cloud Storage JSON API) ist für Ihr Projekt nicht aktiviert. Verwenden Sie die Google Developers Console, um Ihre Konfiguration zu aktualisieren."

Ich habe diese API in der Google Devlopers Console aktiviert, dann nach ein paar Minuten, vuala, es hat funktioniert.

+0

Ich habe den gleichen anfänglichen Fehler, aber habe diesen Code leider nicht. Danke, dass du mir den Kopf für mehr Debug-Informationen gibst! – lathomas64