Ich spiele mit Amazon ECS (ein Umpacken von Docker) und stelle fest, dass es eine Docker-Funktion gibt, die ECS anscheinend nicht bietet. Ich möchte nämlich, dass mehrere Container in einer Instanz ausgeführt werden und Anforderungen, die an IP-Adresse 1 eingehen, auf Container 1 und Anforderungen, die an IP-Adresse 2 eingehen, auf Container 2 usw. abgebildet werden.
In Docker erfolgt das Binden eines Containers an eine bestimmte IP-Adresse über:
docker run -p myHostIPAddr:80:8080 imageName command
In Amazon ECS scheint es jedoch keine Möglichkeit zu geben, dies zu tun.
Ich habe eine EC2-Instanz mit mehreren elastischen IP-Adressen eingerichtet. Wenn Sie einen Container als Teil einer Aufgabendefinition konfigurieren, können Sie Host-Ports Container-Ports zuordnen. Im Gegensatz zu Docker bietet ECS jedoch keine Möglichkeit, die Host-IP-Adresse als Teil der Zuordnung anzugeben.
Eine zusätzliche Wendung ist, dass ich möchte, dass ausgehende Anforderungen von Container N die externe IP-Adresse von Container N haben.
Gibt es eine Möglichkeit, all das zu tun?
Ich habe die AWS CLI-Dokumentation sowie das AWS SDK für Java durchgesehen. Ich kann sehen, dass die CLI ein networkBindings-Array mit folgenden Elementen zurückgeben kann:
{
"bindIP": "0.0.0.0",
"containerPort": 8021,
"hostPort": 8021
},
und das Java SDK verfügt über eine Klasse mit dem Namen NetworkBinding, die dieselben Informationen darstellt. Diese Informationen werden jedoch offenbar nur als Antwort auf eine Anforderung ausgegeben. Ich kann keine Möglichkeit finden, diese verbindlichen Informationen an ECS weiterzuleiten.
Der Grund, warum ich dies tun möchte, ist, dass ich völlig verschiedene VMs für verschiedene Wahlkreise einrichten möchte, wobei verschiedene Container möglicherweise auf derselben EC2-Instanz verwendet werden. Jede VM verfügt über einen eigenen Webserver (einschließlich unterschiedlicher SSL-Zertifikate) sowie über einen eigenen FTP- und SSH-Dienst.
Vielen Dank.
aws ecs describe-container-instances
scheint nicht zu helfen. Sie scheinen dich wirklich dazu bringen zu wollen, eine ELB zu benutzen, was für unseren Fall ziemlich dumm ist.