【问题标题】:Docker - cannot build simple dotnet webapi container: COPY failed: stat /var/lib/docker/overlay2 errorDocker - 无法构建简单的 dotnet webapi 容器:复制失败:stat /var/lib/docker/overlay2 错误
【发布时间】:2020-02-28 14:19:29
【问题描述】:

我创建了一个简单的 .NET Core 3.0 Web API。在项目目录中,我有一个如下所示的 Dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env
WORKDIR /app

# copy over csproj and restore nuget packages
COPY DockerWebApiSandbox.csproj ./
RUN dotnet restore

# copy everything else over into the same directory as the last copy step
# and run the publish step to build and gather output
COPY . ./
RUN dotnet publish -c Release -o output

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DockerWebApiSandbox.dll"]

从我的项目的工作目录运行 docker build -t dockerwebapisandbox . 时,我看到第 9 步(共 10 步)失败(第三个 COPY 命令):

复制失败:统计 /var/lib/docker/overlay2/f6f3391827aef74f1dab5716635a9119ae250ae94a216bbc0bc7b47c4030d60a/merged/app/out: 没有这样的文件或目录

在搜索社区对此错误的评价时,我发现了一个建议 here。该建议提到了对 VM 的筛选,但此命令失败,因为 com.docker.driver.amd64-linux/ 目录在预期的位置不存在。建议的屏幕命令如下所示:$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

除了尝试上面链接中的建议之外,除了 Docker Desktop 中提供的“恢复出厂设置”选项之外,我还尝试完全卸载 Docker 和 Docker Desktop。

FWIW,我正在运行 MacOS Mojave。 TIA 适合任何有建议的人。

【问题讨论】:

  • RUN ... -o output 命令是否创建了一个目录/app/output,与您在第二阶段尝试创建的/app/out COPY 不同?
  • COPY --from=build-env /app/out . 应更改为 COPY --from=build-env /app/output .,因为您要发布到名为“输出”的目录
  • oof,是的,你们俩都完全正确.. 感谢您发现这样一个愚蠢的错误。

标签: docker .net-core dockerfile docker-build


【解决方案1】:

我在 Node.js 中遇到了同样的错误。我正在解决使用

COPY . .

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2023-01-12
    • 2020-08-09
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多