Linux 在Amazon ECS EC2任务内启动userland proxy:0.0.0.0:25时出错

Linux 在Amazon ECS EC2任务内启动userland proxy:0.0.0.0:25时出错,linux,amazon-web-services,docker,smtp,amazon-ecs,Linux,Amazon Web Services,Docker,Smtp,Amazon Ecs,我有EC2启动类型的亚马逊ECS集群 我尝试使用25和587端口映射运行docker(Linux)容器 Dockerfile非常简单: FROM microsoft/dotnet:2.0-runtime AS base WORKDIR /app FROM microsoft/dotnet:2.0-sdk AS build WORKDIR /src COPY *.sln ./ COPY MailTool.Smtp/MailTool.Smtp.csproj MailTool.Smtp/ RUN d

我有EC2启动类型的亚马逊ECS集群

我尝试使用25和587端口映射运行docker(Linux)容器

Dockerfile非常简单:

FROM microsoft/dotnet:2.0-runtime AS base
WORKDIR /app

FROM microsoft/dotnet:2.0-sdk AS build
WORKDIR /src
COPY *.sln ./
COPY MailTool.Smtp/MailTool.Smtp.csproj MailTool.Smtp/
RUN dotnet restore
COPY . .
WORKDIR /src/MailTool.Smtp
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
EXPOSE 25
EXPOSE 587
ENTRYPOINT ["dotnet", "MailTool.Smtp.dll"]
我使用了任务定义的默认设置

任务定义网络模式为桥接

我已映射了屏幕截图上所示的端口:

启动新任务后,出现以下错误:

Status reason   CannotStartContainerError: API error (500): driver failed programming external connectivity on endpoint ecs-1-8-1-febb999cf990b2f53700 (646613a2e4c7ae1f0c8e82a2100d468eba09c7dbd64caddde3d14901d14a775c): Error starting userland proxy: listen tcp 0.0.0.0:25
我只有在Linux类型容器上才有此错误。如果我使用Windows类型容器,那么所有操作都可以正常工作

若我更改映射125(主机端口)->25(容器端口),那个么任务也可以正常工作

据我所知,Linux的端口25不可用


如何将Amazon ECS EC2实例上的端口25用于Linux docker容器?

您必须已启动
Amazon ECS优化AMI
?只需检查是否有任何SMTP服务在其上运行,如果是,请禁用并在默认情况下不启动它,端口应为available@TarunLalwani我用于将docker容器部署到Amazon。所以我的EC2实例是自动创建的。据我所知,该实例是在没有密钥对(PEM文件)的情况下创建的。如中所述,我无法连接到我的EC2实例。我的主要目标是自动创建新集群和实例,而无需任何其他操作。我认为您可能需要自定义AMI,创建自己的AMI,并在AWS工具包中指定相同的AMI。我还没有使用工具包,但我认为这应该是可能的