我正在使用 Amazon ECS(Docker 的重新打包),我发现 ECS 似乎没有提供一项 Docker 功能。即,我希望在一个实例中运行多个容器,并将进入 IP 地址 1 的请求映射到容器 1,进入 IP 地址 2 的请求映射到容器 2,等等。
在 Docker 中,将容器绑定到特定 IP 地址是通过以下方式完成的:
docker run -p myHostIPAddr:80:8080 imageName command
Run Code Online (Sandbox Code Playgroud)
但是,在 Amazon ECS 中,似乎没有办法做到这一点。
我已经设置了一个具有多个弹性 IP 地址的 EC2 实例。将容器配置为任务定义的一部分时,可以将主机端口映射到容器端口。但是,与 Docker 不同的是,ECS 不提供将主机 IP 地址指定为映射的一部分的方法。
另一个转折点是我希望来自容器 N 的出站请求具有容器 N 的外部 IP 地址。
有没有办法做到以上所有?
我浏览了 AWS CLI 文档以及适用于 Java 的 AWS 开发工具包。我可以看到 CLI 可以返回一个包含如下元素的 networkBindings 数组:
{
"bindIP": "0.0.0.0",
"containerPort": 8021,
"hostPort": 8021
},
Run Code Online (Sandbox Code Playgroud)
Java SDK 有一个名为 NetworkBinding 的类,表示相同的信息。但是,此信息似乎仅用于输出,以响应请求。我找不到向 ECS 提供此绑定信息的方法。
我想这样做的原因是我想为不同的选区设置完全不同的 VM,在同一个 …