Давайте рассмотрим каждый тип сети один за другим:
none network
означает, что нет внешнего сетевого интерфейса (следовательно, нет IP-адреса), и в контейнере существует только петля. Ну нет IP-адреса — нет проброса портов.host network
означает, что у контейнера нет собственного сетевого стека. Вместо этого он повторно использует хост. Вы по-прежнему можете перенаправлять порты, но вам придется делать это самостоятельно (например, вручную создавая правила iptables), потому что с точки зрения Docker необходимости в этом очень мало.- bridge сеть использует программный мост, который позволяет контейнерам, подключенным к одной и той же мостовой сети, взаимодействовать, обеспечивая при этом изоляцию от контейнеров, которые не подключены к этой сети. Драйвер
bridge
Docker автоматически устанавливает правила на хост-компьютере, чтобы контейнеры в разных сетях мостов не могли напрямую взаимодействовать друг с другом. container:<other>network
означает, что текущий контейнер повторно использует сетевой режим другого контейнера. В частности, это заставляет контейнер наследовать уже опубликованные порты (если таковые имеются). Но в этом режиме вы не можете публиковать свои собственные порты.overlay
сеть кажется отголоском времен Swarm. Судя по всему, там можно сделать какую-то публикацию портов, но для "сервисов", а не отдельных контейнеров. У меня нет большого опыта работы с этим режимом, поэтому не буду спекулировать.ipvlanа и macvlan
сетевые режимы не поддерживают переадресацию портов, поскольку они, вероятно, предполагают, что IP-адреса, назначенные контейнерам, маршрутизируются напрямую и выходят за рамки основных обязанностей Docker.
⚠️ Обратите внимание, что в большинстве случаев Docker молча игнорирует этот -p|--publishфлаг, если базовый сетевой драйвер не поддерживает переадресацию портов.
4.3.3 Persistance Data Theme | Back To iOSWiki Contents | 4.3.5 Docker Practise Theme