rod*_*ira 3 docker google-cloud-platform
尝试配置在 GCP 之外运行的容器以登录到 Google Cloud Platform (StackDriver)。一项要求是 Docker 守护程序能够定位环境变量,GOOGLE_APPLICATION_CREDENTIALS
以便进行身份验证。人们会假设以下内容会起作用,但它不会:
GOOGLE_APPLICATION_CREDENTIALS=/usr/local/keys/project-1.json docker run --log-driver=gcplogs ...
Run Code Online (Sandbox Code Playgroud)
输出:
ERROR: for api Cannot start service api:
failed to initialize logging driver: google: could not find default credentials.
See https://developers.google.com/accounts/docs/application-default-credentials
for more information.
Run Code Online (Sandbox Code Playgroud)
还没有找到任何关于如何直接在 上设置它的文档daemon.json
,但我也不希望那样做,因为我可能有不同的容器记录到不同的 GCP 项目。
我已经在 Mac(docker 桌面)和 Debian 上试过了。
这是一个不断出现的问题。这里发生的是环境变量GOOGLE_APPLICATION_CREDENTIALS由系统 docker 守护进程加载。系统守护进程看不到用户登录中设置的环境变量。您需要做的是在系统级别设置GOOGLE_APPLICATION_CREDENTIALS。
以下是如何在 Ubuntu(Systemd) 中执行此操作:
$ sudo mkdir -p /etc/systemd/system/docker.service.d
Run Code Online (Sandbox Code Playgroud)
使用以下内容创建/etc/systemd/system/docker.service.d/env.conf:
[Service]
Environment="GOOGLE_APPLICATION_CREDENTIALS=/path/to/file.json"
Run Code Online (Sandbox Code Playgroud)
应用更改。
$ sudo systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)
完成后重启 docker/containerd 守护进程
$ sudo systemctl restart containerd
$ sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)
测试 gcplogs 驱动程序
docker run --log-driver=gcplogs --log-opt gcp-project="my-project" hello-world
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
359 次 |
最近记录: |