Назад | Перейти на главную страницу

Можно ли назначить общедоступные IP-адреса нескольким контейнерам Docker на одном сервере?

Я хочу иметь несколько контейнеров Docker на одном сервере, и оба они должны размещать веб-приложения. Если у меня настроен только один контейнер Docker, я могу открыть порт 80 в контейнере Docker и подключиться к контейнеру Docker через общедоступный IP-адрес физического сервера. Однако я хочу, чтобы два контейнера Docker работали на порте 80 на физическом сервере и были доступны по отдельным IP-адресам с серверов в той же сети, что и физический сервер Docker. Это возможно? Если да, то как я могу это реализовать? Я провел некоторое исследование и не нашел способа сделать это, поэтому любые советы будут оценены.

Два устройства не могут использовать один и тот же IP-адрес без проблем с подключением и трафиком. На более низком уровне сетевое оборудование использует MAC-адрес (который должен быть уникальным для каждого устройства), чтобы решить, куда отправлять трафик, связанный с данным соединением. Включение другого устройства в LAN с уже используемым IP-адресом приводит к случайной доставке пакетов на каждое устройство. Один хост может ожидать пакет ACK в установленном соединении, но никогда не получает его, потому что он был отправлен другому хосту.

Если вы пытаетесь создать «резервный» образ докера, который автоматически начнет обслуживать контент, когда «горячее» изображение отключится, посмотрите HAProxy. Если вы хотите распределять запросы по обоим контейнерам, посмотрите RRDNS. Это одни из самых дешевых / простых способов одновременного подключения нескольких хостов.

Оба варианта относятся к технологиям, связанным с «балансировкой нагрузки» или «отказоустойчивостью». Есть и другие варианты, но все зависит от того, сколько времени, денег и усилий вы хотите вложить в это.