如何将google云应用凭证文件传递到docker容器



我想通过我的谷歌云平台的服务帐户JSON凭证文件到docker容器,使容器可以访问云存储桶。到目前为止,我尝试在运行命令中将该文件作为环境参数传递,如下所示:

  • 使用——env标志:docker run -p 8501:8501 --env GOOGLE_APPLICATION_CREDENTIALS=/Users/gcp_credentials.json" -t -i image_name
  • 使用-e标志,甚至在命令行中导出相同的env变量:docker run -p 8501:8501 -e GOOGLE_APPLICATION_CREDENTIALS=/Users/gcp_credentials.json" -t -i image_name

但是没有工作,我总是得到以下错误时运行docker容器:

W外部/org_tensorflow/tensorflow/核心/平台/云/google_auth_provider.cc: 184]所有获取Google身份验证承载令牌的尝试都失败了,返回一个空令牌。从文件检索令牌失败,显示"Not发现:无法定位凭证文件。

如何将谷歌凭据文件传递到我个人笔记本电脑上本地运行的容器?

你不能"外部路径,但必须将JSON添加到容器。

我在本地环境中登录gcloud,然后将该json文件作为卷共享到容器的同一位置。

这里有一个关于如何使用相关提取的好帖子:在本地测试容器时使用Google Cloud用户凭据

本地登录

要在本地环境中获取默认用户凭据,请执行以下操作必须使用gcloud SDK。您有两个命令来获得身份验证:

gcloud auth login获得所有后续gcloud的身份验证命令gcloud auth应用程序默认登录创建您的ADC在本地,在一个"知名"的地方。

注意凭证的位置

Google auth库尝试通过执行按此顺序检查

查看环境变量GOOGLE_APPLICATION_CREDENTIALS的值。如果存在,使用它,否则……查看元数据服务器(仅在Google上)云平台)。如果它返回正确的HTTP代码,使用它,否则如果用户凭据JSON文件存在,则在"众所周知"的位置"知名"地点

linux:~/.config/gcloud/application_default_credentials.jsonOnWindows:%appdata%/gcloud/application_default_credentials.json

与容器共享卷

因此,您必须像这样运行本地docker运行命令

ADC = ~/config/gcloud/application_default_credentials。Json docker运行
-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME。. json
-v ${ADC}:/tmp/keys/FILE_NAME. jsonjson:ro

注意:这只适用于本地开发,在谷歌云平台上,服务的凭据会自动为您插入。

有两种方法:

  • 卷:https://docs.docker.com/storage/volumes/
  • 秘密:https://docs.docker.com/engine/swarm/secrets/

秘密-使用docker swarm模式

  • create docker secrets
  • 在容器中使用——secret

优点是,秘密是加密的。当安装到容器中时,秘密被解密。

相关内容

  • 没有找到相关文章

最新更新