19

我对如何在 docker 容器上验证 gcloud sdk 感到有些困惑。现在,我的 docker 文件包括以下内容:

#Install the google SDK
RUN curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz
RUN mkdir -p /usr/local/gcloud
RUN tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz
RUN /usr/local/gcloud/google-cloud-sdk/install.sh
RUN /usr/local/gcloud/google-cloud-sdk/bin/gcloud init

但是,我很困惑如何进行身份验证?当我gcloud auth application-default login在我的机器上运行时,它会在 chrome 中打开一个新选项卡,提示我登录。如果它在容器中的谷歌浏览器中打开一个新选项卡,我将如何在 docker 容器上输入我的凭据?

4

2 回答 2

20

在设置 docker 容器时,您可能会考虑使用 deb 包,因为它是在docker hub上完成的。

那就是说您不应该运行gcloud initor gcloud auth application-default loginor gcloud auth login... 这些是启动浏览器的交互式命令。要向容器提供凭据,请为其提供服务帐户密钥文件。

您可以从云控制台下载一个:httpsgcloud ://console.cloud.google.com/iam-admin/serviceaccounts/project?project=YOUR_PROJECT 或使用命令创建它

gcloud iam service-accounts keys create

请参阅参考指南

无论哪种方式,一旦您拥有密钥文件将其添加到您的容器并运行

gcloud auth activate-service-account --key-file=MY_KEY_FILE.json

您现在应该已设置好,但如果要将其用作应用程序默认凭据 (ADC),即在其他库和工具的上下文中,则需要设置以下环境变量以指向密钥文件:

export GOOGLE_APPLICATION_CREDENTIALS=/the/path/to/MY_KEY_FILE.json

这里要指出的一件事是该gcloud工具不使用 ADC,因此稍后如果您将帐户更改为其他帐户,例如通过

gcloud config set core/account my_other_login@gmail.com

其他工具和库将继续通过 ADC 密钥文件使用旧帐户,但gcloud现在将使用不同的帐户。

于 2017-08-05T13:05:29.880 回答
11

您可以将本地 Google SDK 凭据映射到映像中。[来源]

首先使用以下方式登录:

$ gcloud auth application-default login

然后将以下内容添加到您的 docker-compose.yaml 中:

volumes:
  - ~/.config/:/root/.config
于 2018-06-12T21:33:53.397 回答