重新启动后,Google Cloud Logging Driver无法找到凭据

问题描述 投票:0回答:2

我按照指示here,一切正常,直到我重新启动计算机。重新启动后,似乎docker守护程序失去了对Google凭据的跟踪。

$ docker run --log-driver=gcplogs ...

失败了:

docker: Error response from daemon: failed to initialize logging driver: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information. ERRO[0000] error waiting for container: context canceled

这对我来说很奇怪,因为运行$ systemctl show --property=Environment docker会返回我的systemd配置中的值:Environment=GOOGLE_APPLICATION_CREDENTIALS=/etc/path/to/application_default_credentials.json

如果我$ sudo systemctl restart docker,那么docker运行成功并且日志被发送到stackdriver。但是我希望这个docker镜像在启动时自动运行,并且用sudo重新启动docker会妨碍。

有没有办法用必要的环境变量初始化docker守护进程,所以gcplogs在启动时准备就绪而不重启docker?

docker google-cloud-platform systemd google-cloud-stackdriver
2个回答
1
投票

我安装了两个版本的docker - 一个是通过将docker的repo添加到apt,另一个是通过snap。运行

sudo systemctl list-unit-files| grep docker | grep enabled

显示了两个docker的安装:

docker.service                             enabled    
snap.docker.dockerd.service                enabled

有两个docker安装导致启动问题。我删除了快照安装,重新启动,现在一切正常。


0
投票

我想你可能会尝试编辑systemd: Unit dependencies and order,让docker.service在google-accounts-daemon.service之后启动。

您可以在google vm中查看所有服务

sudo systemctl list-unit-files| grep google | grep enabled

你会看到

google-accounts-daemon.service             enabled
google-clock-skew-daemon.service           enabled
google-instance-setup.service              enabled
google-network-daemon.service              enabled
google-shutdown-scripts.service            enabled
google-startup-scripts.service             enabled
© www.soinside.com 2019 - 2024. All rights reserved.