重新启动后,Google Cloud Logging驱动程序找不到凭据

时间:2019-02-27 19:59:42

标签: docker google-cloud-platform systemd google-cloud-stackdriver

我已按照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会在我的系统配置中返回值:Environment=GOOGLE_APPLICATION_CREDENTIALS=/etc/path/to/application_default_credentials.json

如果我$ sudo systemctl restart docker,则docker运行成功,并且日志被发送到stackdriver。但是我希望此docker映像在启动时自动运行,并使用sudo重新启动docker。

是否可以使用必要的环境变量来初始化docker守护进程,这样gcplogs就可以在启动时准备好了,而无需重启docker?

2 个答案:

答案 0 :(得分:1)

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

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

显示了docker的两个安装:

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

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

答案 1 :(得分: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