我目前正在尝试将 Docker 映像推送到我的容器注册表,这是文档中使用的唯一命令:
gcloud docker -- push gcr.io/my_project/foo:v1
但是由于我在 Docker 容器内运行
google-cloud-sdk
,我无法使用 gcloud docker ...
,因为 Docker 正在主机上运行。
有什么方法可以将映像推送到容器注册表,而无需在本地文件系统上安装
google-cloud-sdk
?
我自己设法找到了答案,但作为参考,我不会删除问题,而只是发布答案。
为了将 Docker 映像直接从
docker
客户端推送到 Google 容器注册表,您需要使用 docker login
命令以及 Google Cloud 项目的身份验证令牌。
要获取您的 Google Cloud 项目的身份验证令牌,请使用:
gcloud auth application-default print-access-token
然后使用该令牌通过
docker
: 登录 Google Cloud
docker login -u oauth2accesstoken -p "token_goes_here" https://gcr.io
如果登录成功,您现在应该可以将镜像直接推送到 Google 容器注册表:
docker push gcr.io/my_project/foo:v1
值得一提的是,Google ContainerRegistry 即将被弃用,并被 Google ArtifactRegistry 取代。
使用新方法,上述答案将不再有效。如果您正在寻求指导,请参阅以下文档:
https://cloud.google.com/artifact-registry/docs/docker/store-docker-container-images#push