用于 Docker 的 Google Cloud Logging 驱动程序
Posted
技术标签:
【中文标题】用于 Docker 的 Google Cloud Logging 驱动程序【英文标题】:The Google Cloud Logging driver for Docker 【发布时间】:2018-10-03 15:00:09 【问题描述】:尽管我已将环境变量 GOOGLE_APPLICATION_CREDENTIALS
设置为我的服务帐户的 JSON 凭据所在的路径/文件,但我无法为 Docker 验证谷歌云驱动程序 gcplogs
。错误信息如下:
ERROR: for oncrm_oncrm_1 Cannot start service oncrm: failed to initialize logging driver: google.DefaultTokenSource: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
我在 docker-compose 上使用的配置是:
logging:
driver: gcplogs
options:
gcp-project: "gcloud-project-id"
gcp-meta-name: "prod-helpsec-01"
labels: "app"
我尝试运行 docker 容器的环境是:
docker-ce v18.03
docker-compose v1.21.0
Ubuntu 17.10
【问题讨论】:
好吧,显然守护进程需要 systemd 配置中的 env var。这样就解决了 【参考方案1】:google.DefaultTokenSource: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
当我使用 gcplogs 日志记录驱动程序运行 docker 服务时,我遇到了与上述相同的问题。
这是我的问题解决方案:
在主机上:
sudo mkdir -p /etc/systemd/system/docker.service.d
创建文件:
/etc/systemd/system/docker.service.d/docker-service-override.conf
包含以下内容:
[Service]
Environment="GOOGLE_APPLICATION_CREDENTIALS=/root/gcp-logging-service-cridentials.json"
重启docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
有用的链接:
-
https://cloud.google.com/docs/authentication/getting-started
https://docs.docker.com/config/daemon/systemd
https://docs.docker.com/config/containers/logging/gcplogs/
【讨论】:
奖励您对我自己找到的解决方案的详细解释。 知道如何使用 Docker for Mac 做到这一点吗?以上是关于用于 Docker 的 Google Cloud Logging 驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
如何获得Google Cloud的所有docker-machine映像列表
将 env 变量从 Google 的 Secret Manager 加载到在 Google Cloud Run 上运行但未通过 Cloud Build 部署的 Docker 容器中?
部署到 Google Cloud Run 时 Docker 容器无法启动