Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问路径'/proc/1/map#u文件';被拒绝.NET Core 2.1 Centos 7_C#_Docker_Asp.net Core_Centos_Asp.net Core 2.1 - Fatal编程技术网

C# 访问路径'/proc/1/map#u文件';被拒绝.NET Core 2.1 Centos 7

C# 访问路径'/proc/1/map#u文件';被拒绝.NET Core 2.1 Centos 7,c#,docker,asp.net-core,centos,asp.net-core-2.1,C#,Docker,Asp.net Core,Centos,Asp.net Core 2.1,最近,我按照建议的升级指南将.NET Core web应用程序项目升级到.NET Core 2.1 我还更新了DockerFile——一个使用alpine运行时映像作为基础,另一个使用标准aspnet运行时映像作为基础。但是,在Centos 7.4上运行的Docker主机上运行这些文件时,它们会立即失败,并显示消息“拒绝访问路径“/proc/1/map_文件”。这些映像构建在运行它们的同一台机器上 在Windows上构建和运行时,没有问题。当Centos上构建的图像导入Docker for Wi

最近,我按照建议的升级指南将.NET Core web应用程序项目升级到.NET Core 2.1

我还更新了DockerFile——一个使用alpine运行时映像作为基础,另一个使用标准aspnet运行时映像作为基础。但是,在Centos 7.4上运行的Docker主机上运行这些文件时,它们会立即失败,并显示消息“拒绝访问路径“/proc/1/map_文件”。这些映像构建在运行它们的同一台机器上

在Windows上构建和运行时,没有问题。当Centos上构建的图像导入Docker for Windows时,它们运行良好。只有在Centos docker主机上才会出现此问题

我在Github上提交了一个问题,发现了一个类似的问题,但给出的唯一解决方案是使用一个工作目录(我尝试了,但没有成功)

不知道这里发生了什么,但希望以前有人碰到过

docker文件是

FROM microsoft/dotnet:2.1.2-aspnetcore-runtime-alpine3.7
COPY /publish/ .
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000

RUN mkdir web-data
RUN mkdir web-data/my-api

ENTRYPOINT ["dotnet", "My.Api.dll"]

docker运行命令如下所示

docker run -d -e ASPNETCORE_ENVIRONMENT=Dev -e DP_CERT_PASS=123xyz \
--name my-app --net app-web  \
--mount source=logs,target=/etc/logs --mount source=web-data,target=/web-data \
--mount source=dp-certs,target=/etc/ssl/dotnet \
--restart always my-app:1.0.0

通过添加一个工作目录/app并在其中复制文件,可以解决此问题。然而,我仍然不确定为什么它在2.0而不是2.1上运行,为什么它在Docker for Windows而不是Docker on Centos上运行

您只需在Dockerfile中添加此“WORKDIR/app”

我正在编译dotnet core 2.2,并将其打包到CentOS7服务器上运行的Docker上,请参见我的Dockerfile示例,它对我来说运行良好:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-dotnetcore-sdk
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2

WORKDIR /app
COPY --from=build-dotnetcore-sdk /app/out .

ENTRYPOINT dotnet poc-dotnet-core-mvc.dll

我们的团队花了一上午的时间试图找出这个问题。我们还在CentOS的Docker上运行.net核心C#web应用程序。当我们使用.net core 2.0将应用程序复制到容器中的根级别时,它一开始没有崩溃。但它积累了inotify_add_watch,最终因“设备上没有剩余空间”而失败。在.net core 2.2上,容器在启动时崩溃,并显示“/proc/1/map_files”被拒绝消息。您将应用程序移动到/app文件夹的修复修复了2.0和2.2两种情况下的问题。谢谢你的解决方案。节省了我们很多时间!我在一个多阶段构建中遇到了类似的问题:第一个映像还使用了一个工作目录
/app
,但第二个映像没有。在第二个映像中添加
WORKDIR/app/
后,问题得到解决。我在azure functions/dotnet映像中工作,它在添加WORKDIR后工作
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-dotnetcore-sdk
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2

WORKDIR /app
COPY --from=build-dotnetcore-sdk /app/out .

ENTRYPOINT dotnet poc-dotnet-core-mvc.dll