Я граю з Amazon ECS (перепаковка Docker) і виявляю, що є одна можливість Docker, яка, схоже, не забезпечує ECS. А саме, я хотів би мати кілька контейнерів, що працюють в екземплярі, і мати запити, що надходять на IP-адресу 1, карта в контейнер 1, і запити, що надходять на IP-адресу 2, карту в контейнер 2 і т.д.
У Docker прив'язка контейнера до певної IP-адреси здійснюється за допомогою:
docker run -p myHostIPAddr:80:8080 imageName command
Однак в Amazon ECS, здається, немає способу зробити це.
Я створив екземпляр EC2 з декількома Elastic IP-адресами. Конфігуруючи контейнер як частину визначення завдання, можна зіставити хости-порти на порти контейнерів. Однак, на відміну від Докера, ECS не забезпечує спосіб вказати IP-адресу хоста як частину відображення.
Додатковим поворотом є те, що я хотів би вихідні запити з контейнера N мати зовнішню IP-адресу контейнера N.
Чи є спосіб зробити все вищезазначене?
Я ознайомився з документацією AWS CLI, а також AWS SDK для Java. Я бачу, що CLI може повернути мережевий масив, що містить такі елементи:
{
"bindIP": "0.0.0.0",
"containerPort": 8021,
"hostPort": 8021
},
і Java SDK має клас під назвою NetworkBinding, який представляє ту саму інформацію. Однак ця інформація видається лише вихідною у відповідь на запит. Я не можу знайти спосіб надання цієї обов'язкової інформації ECS.
Причиною того, що я хочу це зробити, є те, що я хочу створити абсолютно різні VM для різних округів, використовуючи різні контейнери потенційно на одному екземплярі EC2. Кожен VM матиме власний веб-сервер (включаючи окремі сертифікати SSL), а також власну службу FTP та SSH.
Спасибі.
aws ecs describe-container-instances
Мабуть, не допомагає. Вони, схоже, дуже хочуть підштовхнути вас до використання ELB, що для нашого випадку є німим тупим.