簡體   English   中英

如何將谷歌雲應用程序憑據文件傳遞給 docker 容器

[英]How to pass google cloud application credentials file to docker container

我想將我的 Google Cloud Platform 服務帳戶 JSON 憑證文件傳遞給 docker 容器,以便該容器可以訪問雲存儲桶。 到目前為止,我嘗試將文件作為運行命令的環境參數傳遞,如下所示:

  • 使用--env標志: docker run -p 8501:8501 --env GOOGLE_APPLICATION_CREDENTIALS=/Users/gcp_credentials.json" -t -i image_name
  • 使用-e標志甚至在命令行中導出相同的環境變量: docker run -p 8501:8501 -e GOOGLE_APPLICATION_CREDENTIALS=/Users/gcp_credentials.json" -t -i image_name

但是沒有任何效果,我在運行 docker 容器時總是得到以下錯誤:

W external/org_tensorflow/tensorflow/core/platform/cloud/google_auth_provider.cc:184] 獲取 Google 身份驗證承載令牌的所有嘗試均失敗,返回空令牌。 從文件中檢索令牌失敗,顯示“未找到:無法找到憑據文件。”。

如何將 google 憑據文件傳遞到在我的個人筆記本電腦上本地運行的容器?

您不能“傳遞”外部路徑,但必須將 JSON 添加容器中。

兩種方法:

秘密- 使用 docker 群模式。

  • 創建 docker 個秘密
  • 使用--secret將 secret 與容器一起使用

優點是,秘密是加密的。 秘密在安裝到容器時被解密。

我在本地環境中登錄 gcloud,然后將該 json 文件作為卷共享到容器中的同一位置。

這是一篇關於如何使用以下相關摘錄進行操作的好帖子: 在本地測試容器時使用 Google Cloud 用戶憑據

本地登錄

要在本地環境中獲取默認用戶憑據,您必須使用 gcloud SDK。您有 2 個命令來獲取身份驗證:

gcloud auth login 以在所有后續 gcloud 命令上進行身份驗證 gcloud auth application-default login 以在“眾所周知”的位置本地創建您的 ADC。

注意憑據的位置

Google 授權庫嘗試通過按此順序執行檢查來獲取有效憑據

查看環境變量GOOGLE_APPLICATION_CREDENTIALS值。 如果存在,則使用它,否則……查看元數據服務器(僅在 Google Cloud Platform 上)。 如果它返回正確的 HTTP 代碼,請使用它,否則...如果存在用戶憑證 JSON 文件,請查看“知名”位置“知名”位置是

在 linux 上: ~/.config/gcloud/application_default_credentials.json在 Windows 上: %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.json:ro \ <IMAGE_URL>

注意:這僅適用於本地開發,在 Google Cloud Platform 上,服務的憑據會自動為您插入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM