通过 Actions Runner 构建 Windows Dockerfile 时“无法找到用户 ContainerUser”

tma*_*rst 8 docker .net-core dockerfile nano-server github-actions-self-hosted-runners

构建我的 Windows dockerfile (.net core nano) 时...

docker build -f *** -t ***:*** --build-arg ARG1=foo --build-arg ARG2=bar .

我在构建过程中收到一个错误,该错误是响应我的第一个RUN命令而发生的。该命令将失败并显示以下消息:

ERROR: failed to solve: process "cmd /S /C dotnet restore \"myproject.csproj\"" did not complete successfully: unable to find user ContainerUser: invalid argument

就我而言,这是一个dotnet restore命令,但任何RUN语句都会导致:

unable to find user ContainerUser: invalid argument

请注意,Windows Nanoserver 容器的默认用户是ContainerUser。如果我指定另一个用户,例如。USER ContainerAdministrator在该语句之前RUN,该用户也会发生相同的故障 ( unable to find user ContainerAdministrator: invalid argument)。

Dockerfile 片段:

FROM mcr.microsoft.com/dotnet/sdk:7.0-nanoserver-1809 AS build
WORKDIR /src
COPY ["myproject.csproj", "myproject/"]
RUN dotnet restore "myproject/myproject.csproj"  <--- Error thrown here (user not found)
Run Code Online (Sandbox Code Playgroud)

需要注意的是,只有在自托管 Windows 运行程序上从 github 操作工作流程运行时才会发生这种情况。Dockerfile在其他环境构建没有问题,已经部署成功。但是我无法访问跑步者,所以我试图从远处排除故障。

关于什么会导致用户在容器中找不到的任何想法?我很难找到与此相关的任何文档。谢谢

小智 3

我遇到了同样的问题,直到我删除了FROM 语句的nanoserver部分

尝试:

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
Run Code Online (Sandbox Code Playgroud)

而不是:

FROM mcr.microsoft.com/dotnet/sdk:7.0-nanoserver-1809 AS build
Run Code Online (Sandbox Code Playgroud)