【问题标题】:Docker image not having outbound network access when running in AWS App Runer在 AWS App Runner 中运行时,Docker 映像没有出站网络访问权限
【发布时间】:2021-12-28 13:40:23
【问题描述】:

所以我有这个我最近 dockerized 的 ASP.NET Core 应用程序。它在我的本地机器上运行良好,当我将它推送到 AWS App Runner 时它运行,除非我想进行数据库调用,然后我遇到这个异常:

ExtendedSocketException:资源暂时不可用 System.Net.Dns.GetHostEntryOrAddressesCore(字符串主机名,布尔 只是地址)

该异常与 .Net 或 C# 知识不太相关,重要的是它告诉我们什么,它表示容器内没有可用的套接字。

我对容器化和在 AWS 中托管上述容器相当陌生,之前只在 EC2 上工作过。

我的猜测是,在 AWS App Runner 中运行的容器对网络有限制,当我点击运行按钮时,Docker Desktop 运行容器的方式中不存在这些限制。

有什么方法可以让我在 AWS App Runner 中配置网络更加开放?无论是服务中的配置还是通过 Dockerfile 配置。

我的Dockerfile如下,供参考:

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY . .  
RUN dotnet restore "LeadDog.Web/LeadDog.Web.csproj"
COPY . .
WORKDIR "/src/LeadDog.Web"
RUN dotnet build "LeadDog.Web.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "LeadDog.Web.csproj" -c Release -o /app/publish

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80

FROM base AS final
ENV ASPNETCORE_ENVIRONMENT=Development 
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "LeadDog.Web.dll"]

编辑:

This 是我得到的最接近答案的答案,但是我对 Docker 缺乏专业知识仍然给我留下了疑问,因为我不知道是否可以从 Dockerfile 设置网络模式,或者是否可以配置AWS App Runner 中的网络模式。

提前致谢,

【问题讨论】:

  • App Runner 服务应该具有完全的出站灵活性(因为你可以调用任何你想要的东西)。您要达到的数据库端点是什么?考虑到 App Runner 还没有 VPC 连接,并且它处于开放状态。这意味着您的数据库需要(目前)可以从 Internet 访问,并且显然没有阻止访问它的防火墙安全配置。
  • 可以从我的本地计算机访问数据库,我们还没有配置基于 IP 的访问,所以它是公开访问的。
  • 我知道我可以使用“--network=host”构建,但由于我不知道 App Runner 是如何工作的,我不知道这是否是一个选项,每个 App Runner 实例都是它自己的吗EC2在下面?还是在 Lambda 之类的东西上运行?
  • 据我所知,构建时的--network 选项仅在构建期间有效,在运行时无效。 App Runner 部署到 Fargate,应用端点通过 envoy 代理公开。但关键是所有出站流量(您需要连接到数据库的流量)都已启用(并且与您构建容器的方式无关)。

标签: amazon-web-services docker asp.net-core dockerfile amazon-ecr


【解决方案1】:

事实证明,使用“--network host”构建毕竟是解决方案,在以这种方式构建映像后,使用 AWS App Runner 时服务器连接到数据库没有问题。

【讨论】:

  • 见上面我的其他 cmets。很奇怪,--network 在构建时对此有任何影响。但很高兴你让它工作了。
  • 我自己也有疑问,这就是为什么我首先提出这个问题而不是立即使用其他问题建议,但它成功了。
猜你喜欢
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 2019-02-16
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2019-01-13
相关资源
最近更新 更多