Google Cloud Logging 驱动程序在重启后找不到凭据
Google Cloud Logging Driver cannot find credentials after reboot
我已按照说明进行操作 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
这对我来说很奇怪,因为 运行ning $ systemctl show --property=Environment docker
returns 我的 systemd 配置中的值:
Environment=GOOGLE_APPLICATION_CREDENTIALS=/etc/path/to/application_default_credentials.json
如果我 $ sudo systemctl restart docker
,则 docker 运行 会成功并将日志发送到 stackdriver。但我希望这个 docker 图像在启动时自动 运行,并且用 sudo
重新启动 docker 会妨碍。
有没有办法用必要的环境变量初始化 docker 守护进程,这样 gcplogs 就可以在启动时准备就绪而无需重新启动 docker?
我想你可以尝试编辑 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
我安装了两个版本的 docker -- 一个是通过添加 docker 的 repo 到 apt,另一个是通过 snap。 运行
sudo systemctl list-unit-files| grep docker | grep enabled
显示了 docker 的两个安装:
docker.service enabled
snap.docker.dockerd.service enabled
有两个 docker 安装导致启动问题。我删除了 snap 安装,重新启动,现在一切正常。
我已按照说明进行操作 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
这对我来说很奇怪,因为 运行ning $ systemctl show --property=Environment docker
returns 我的 systemd 配置中的值:
Environment=GOOGLE_APPLICATION_CREDENTIALS=/etc/path/to/application_default_credentials.json
如果我 $ sudo systemctl restart docker
,则 docker 运行 会成功并将日志发送到 stackdriver。但我希望这个 docker 图像在启动时自动 运行,并且用 sudo
重新启动 docker 会妨碍。
有没有办法用必要的环境变量初始化 docker 守护进程,这样 gcplogs 就可以在启动时准备就绪而无需重新启动 docker?
我想你可以尝试编辑 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
我安装了两个版本的 docker -- 一个是通过添加 docker 的 repo 到 apt,另一个是通过 snap。 运行
sudo systemctl list-unit-files| grep docker | grep enabled
显示了 docker 的两个安装:
docker.service enabled
snap.docker.dockerd.service enabled
有两个 docker 安装导致启动问题。我删除了 snap 安装,重新启动,现在一切正常。