сеть докеров - режим хоста против режима моста - сопоставление портов

В производстве, host режим сети рекомендуется bridge режим, чтобы избежать пересылки пакетов.

$ docker container run --help | grep "network"
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container

Тип ресурса Cloudformation AWS::ECS::TaskDefinitionoption (NetworkMode) внутреннее использование определяет сетевой режим для запуска контейнеров докеров, где он говорит:

Если сетевой режим host, вы не можете запустить несколько экземпляров одной и той же задачи в одном экземпляре контейнера, когда используются сопоставления портов.


С помощью AWS::ECS::TaskDefinition,

Я запускаю единственный экземпляр master jenkins(контейнер докеров) с отображением портов 8080:8080. Отображение порта 8080 EC2 с портом контейнера 8080.


Что значит сказать? не может запускать несколько экземпляров одной и той же задачи на одном экземпляре контейнера, когда используются сопоставления портов....

1 ответ

Решение

Когда вы используете network modeв качестве хоста контейнер разделяет сетевое пространство имен хоста, как описано здесь, и, следовательно, отображение портов не действует. Это означает, что вы не можете сопоставить порт 8080 контейнера с портом 80 хоста, потому что, когда контейнер предоставляет порт 8080, он будет доступен непосредственно на порту 8080 на хост-машине.

невозможно запустить несколько экземпляров одной и той же задачи на одном экземпляре контейнера, когда используются сопоставления портов....

Экземпляр контейнера - это в основном особый тип экземпляра EC2, как описано здесь. Это означает, что если вы запускаете более 1 экземпляра одной и той же задачи на одном хост-компьютере (экземпляре контейнера), они будут открывать один и тот же порт (например, 8080), который, в свою очередь, сопоставляется непосредственно с одним и тем же портом на хост-машине и, следовательно, приводит к конфликту.

Другие вопросы по тегам