Если у вас есть установка с одним хостом, тогда вы обычно должны использовать «мост».(В этом случае вы должны объявить некоторую сеть, чтобы воспользоваться преимуществами межконтейнерного DNS.)
Если у вас есть установка с несколькими хостами, то вы можете использовать множество настроек;допустимые опции включают Docker Swarm, Nomad Hashicorp, Kubernetes, созданную вручную настройку с помощью посредника по обнаружению служб, такую как Consul, или созданную вручную настройку, где каждая служба напрямую знает имена хостов других узлов и игнорирует уровень Docker.
Если вы используете Docker Swarm, вам нужно использовать «оверлей».Но каждая из опций, которые я описал выше, использует различные сетевые настройки (Kubernetes использует часть, называемую CNI, и, к примеру, в ней есть дюжина различных вариантов реализации), и этот вопрос не имеет прямого значения для многих из них.
Когда вы описываете проект, кажется, что вы хотите явно разместить приложения на определенных узлах и управлять маршрутизацией между ними вручную.Для этого я бы, вероятно, использовал только «мостовую» сеть: запуск контейнеров Docker с использованием параметров -p
(или Docker Compose ports:
) для публикации портов на IP-адресах хоста и обмена данными между контейнерами, используя только эти IP-адреса хоста.Это даст вам полезный уровень ручного управления для исследовательского проекта.