Intereting Posts

Увеличение предела резервирования портов AWS ECS

Я пытаюсь настроить контейнер докеров с помощью службы aws ecs. Я хотел бы зарезервировать порты 30000 – 60000 на главной машине и сопоставить эти порты с 30000 – 60000 на контейнере. Однако в документации Aws указано, что на хосте может быть зарезервировано только 100 портов:

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html

Может ли кто-нибудь объяснить, почему существует ограничение / предлагать обходные пути?

Я уверен, что ограничение на 100 портов будет связано с тем, как Docker отображает порты .

Docker запускает процесс Go для каждого сопоставленного порта, который будет использовать от 4-6 МБ частной памяти. Таким образом, в 100 портах процессы Docker будут потреблять около 500 МБ памяти.

Если вы попытаетесь отобразить весь порт 30000 – 60000 в контейнер, вам понадобится ~ 150 ГБ памяти. 300 ГБ, если вы хотите как UDP, так и TCP.

Если вам нужно использовать это множество портов, вам необходимо начать использовать --net=host , bridging или mapping непосредственно в контейнере. Это вряд ли будет поддерживаться ECS (на EC2 мне пришлось взять «настоящий» MAC-адрес из интерфейса VPC и поместить его в интерфейс контейнеров ).