首页 > 解决方案 > 来自守护程序的错误响应:构建容器的拉取访问被拒绝,存储库不存在或可能需要“docker login”

问题描述

码头文件:

FROM node:10
ADD . /app
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "index.js" ]

cloudbuild.yaml:

steps:
- name: buildcontainer
args: ['build', '-t', 'gcr.io/$PROJECT_ID/coffee2goserver:${SHORT_SHA}', '.']
- name: 'pushcontainer'
args: ["push", "gcr.io/$PROJECT_ID/coffee2goserver"]

错误:

来自守护程序的错误响应:构建容器的拉取访问被拒绝,存储库不存在或可能需要“docker login”

标签: dockergoogle-cloud-platformyamlgoogle-cloud-buildgoogle-cloud-run

解决方案


Google Cloud Build 不提供您可以在构建中使用的任何buildcontainer图像pushcontainer(除非您自己创建了它们)。

您可以在您的步骤中使用官方 Docker 映像,如下所示:

steps:
- name: docker
args: ['build', '-t', 'gcr.io/$PROJECT_ID/coffee2goserver:${SHORT_SHA}', '.']
- name: docker
args: ["push", "gcr.io/$PROJECT_ID/coffee2goserver:${SHORT_SHA}"]

Docker 构建步骤会使用您的Cloud Build Service Account的凭据自动设置。这些权限足以直接与 GCR 交互。

此外,正如 David Maze@ 在他的评论中提到的那样,请小心使用构建时使用的相同名称推送您的图像,包括${SHORT_SHA}在这种情况下。


推荐阅读