如何停止gcloud docker – 覆盖长寿命凭据?

我们正在使用Google Container Registry来存储我们的Docker镜像。

为了授权我们的构build实例,我们在.docker/config.json放置了长期访问令牌 ,如文档中所述。

这工作完全正常,直到某人(即某些Makefile)使用gcloud docker -- push ...推送到registry(而不是例如docker push ... )。 gcloud一段时间后过期的短期凭证取代现有的长期凭证 。 因此,后续的构build可能会失败,具体时间取决于具体时间。

我的问题 :我如何防止gcloud docker ...弄乱我提供的凭据?

我试过chattr +i .docker/config.json ,但这只是使gcloud抱怨。

https://cloud.google.com/sdk/gcloud/reference/docker

gcloud docker命令组包装docker命令,以便gcloud可以将适当的新的身份validation令牌注入到与dockerregistry交互的请求中。

gcloud docker所做的唯一的事情是更改这些凭据,然后调用gcloud docker CLI。 如果你不希望它改变凭据,没有理由不直接调用docker

一种解决方法可能是使用替代的configuration文件位置作为您的长期凭据; 按照https://docs.docker.com/engine/reference/commandline/cli/

 Options: --config string Location of client config files (default "/root/.docker")