6

我正在尝试从 docker 容器中挂载谷歌云存储桶并收到以下错误:

[root@cdbdc9ccee5b workdir]# gcsfuse -o allow_other  --debug_gcs --key-file=/src/gcloud_service_account.json my-bucket-name /gcloud
Using mount point: /gcloud
Opening GCS connection...
Opening bucket...
daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn:     setUpBucket: OpenBucket: Bad credentials for bucket "my-bucket". Check the bucket name and your credentials.

我的凭据在我的主机上有效,但在正在运行的容器上无效。API 说不要使用 root 进行连接,但您可以使用 -o allow_other 标志(熔断标志)覆盖它。任何想法表示赞赏。

这是在 centos7 基础镜像上运行的

4

3 回答 3

4

Root vs not 是一个红鲱鱼。有问题的凭据是 GCS 凭据。

有关将 GCS 凭据交给 gcsfuse 的文档,请参见此处。最简单的方法是使用您最初配置 GCE VM 的凭据(假设您在 GCE 上运行),这使得运行 gcsfuse 通常无需任何进一步的努力即可工作。但如果这不起作用,您可以使用该标志--key-file为 gcsfuse 提供您从 Google Developers Console 下载的 JSON 密钥文件的路径。

于 2016-01-13T09:56:02.867 回答
3

更新:我能够安装 gcsfuse。我必须使用该--priviledged选项运行 docker。(感谢#thaJeztah 的面包屑!)

于 2016-01-14T00:48:06.293 回答
3

您确实希望避免使用该--privileged选项运行容器。我相信您只需要添加 SYS_ADMIN 功能并访问/dev/fuse设备即可。

docker run \
    --rm -it \
    --cap-add SYS_ADMIN \
    --device /dev/fuse \
    ubuntu
于 2019-02-20T18:18:49.420 回答