Docker构建拉取访问被拒绝,仓库不存在或可能需要授权。

71

我正在尝试在不使用Visual Studio的情况下生成Docker镜像。我位于项目文件夹中,并从Windows 10管理员命令行执行docker build .,但我无法弄清楚如何使其工作。

[+] Building 1.3s (8/9)
 => [internal] load build definition from Dockerfile                                              0.0s
 => => transferring dockerfile: 753B                                                              0.0s
 => [internal] load .dockerignore                                                                 0.0s
 => => transferring context: 34B                                                                  0.0s
 => [internal] load metadata for mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim             0.0s
 => [base 1/2] FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim                          0.0s
 => ERROR FROM docker.io/publish/app:latest                                                       1.2s
 => => resolve docker.io/publish/app:latest                                                       1.2s
 => CACHED [base 2/2] WORKDIR /app                                                                0.0s
 => CACHED [final 1/2] WORKDIR /app                                                               0.0s
 => [auth] publish/app:pull token for registry-1.docker.io                                        0.0s
------
 > FROM docker.io/publish/app:latest:
------
failed to load cache key: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed

这是我的Dockerfile:

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["src/App.Web/App.Web.csproj", "src/App.Web/"]
RUN dotnet restore "App.Web.csproj"
COPY . .
WORKDIR "/src/App.Web"
RUN dotnet build App.Web.csproj -c Debug -o /app

FROM build as debug
RUN dotnet publish "App.Web.csproj" -c Debug -o /app

FROM base as final
WORKDIR /app
COPY --from=publish/app /app .
ENTRYPOINT ["dotnet","App.Web.dll"]

如果您是通过 GitHub Actions 进行构建,且下面的回答无法解决您的问题,请查看此相关 问题 - Akaisteph7
2个回答

157

你有名为基础、构建和调试的阶段。然后在最终阶段,你有:

COPY --from=publish/app /app .
当Docker找不到名为publish/app的阶段时,它会尝试查找该镜像,但该镜像不存在。我猜你想要从构建阶段复制,例如。
COPY --from=build /app .

谢谢,我现在明白了。我在不理解自己在做什么的情况下更改了名称。 - greektreat
从 node:16 作为构建器,我遗漏了 (as builder)。谢谢。 - Abdul Jabbar
1
谢谢!我只是忘了给一个阶段命名,Docker 的错误信息不够清晰,结果就导致了这里。 - Matteo A

3

您是否已登录?请尝试使用docker login,然后再次执行docker build

根据我在Docker Hub中的 aspnet说明书所见,您想要使用的存储库已被重命名。请改用以下存储库。

from mcr.microsoft.com/dotnet/aspnet:3.1-buster-slim

仓库已更名,类似问题可以在这里找到 类似问题


感谢您的建议。这并没有解决问题,因为链接中指出:“为了向后兼容性,在旧存储库位置上将继续更新支持的标记。”但是知道有一个新位置是很有价值的知识。 - greektreat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接