我在玩Amazon ECS(重新包装Docker),发现ECS似乎没有提供一种Docker功能。即,我想在一个实例中运行多个容器,并将进入IP地址1的请求映射到容器1,将进入IP地址2的请求映射到容器2,依此类推。
在Docker中,通过以下方式将容器绑定到特定的IP地址:
docker run -p myHostIPAddr:80:8080 imageName command
但是,在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
},
Java SDK有一个名为NetworkBinding的类,它表示相同的信息。但是,此信息似乎是仅输出,以响应请求。我找不到将这种绑定信息提供给ECS的方法。
我要执行此操作的原因是,我想为同一用户使用可能在同一EC2实例上使用的不同容器为不同的用户设置完全不同的VM。每个VM都有自己的Web服务器(包括不同的SSL证书),以及自己的FTP和SSH服务。
谢谢。
aws ecs describe-container-instances
似乎没有帮助。他们似乎真的想促使您使用ELB,对我们而言,这是愚蠢的。