Подробный гайд: настройка проброса порта 80 на контейнере с двумя сетевыми интерфейсами

Введение

В этом гайде мы рассмотрим, как настроить проброс порта 80 на контейнере Docker с двумя сетевыми интерфейсами. Это может быть полезно, если у вас есть несколько сетей с разными настройками безопасности, и вы хотите разместить приложение на одной из них.

Шаг 1: Подготовка

Прежде всего, убедитесь, что у вас установлен Docker и docker-compose. Также вам потребуется создать две сети с помощью команды:

docker network create my_network1
docker network create my_network2

Шаг 2: Создание двух контейнеров

Далее, мы создадим два контейнера, каждый со своим сетевым интерфейсом. Для этого мы создадим файл docker-compose.yml со следующим содержимым:

version: '3'
services:
  web1:
    image: nginx
    networks:
      my_network1:
        ipv4_address: 172.24.0.2
    ports:
      - "80:80"
  web2:
    image: nginx
    networks:
      my_network2:
        ipv4_address: 172.25.0.2
    ports:
      - "8080:80"
networks:
  my_network1:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.24.0.0/16
  my_network2:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.25.0.0/16

Этот файл описывает два сервиса: web1 и web2. Каждый из них будет находиться в своей сети, и мы настроим привязку к определенным IP-адресам, чтобы иметь возможность легко настраивать маршрутизацию. Здесь мы также настроим проброс порта 80 для web1 и порта 8080 для web2.

Создайте и запустите контейнеры с помощью команды:

docker-compose up -d

Шаг 3: Настройка маршрутизации

Теперь мы должны настроить маршрутизацию, чтобы мы могли получить доступ к нашим приложениям из разных сетей. Мы должны добавить маршрут к двум IP-адресам контейнеров через соответствующие сетевые интерфейсы. Для этого нужно выполнить команды:

ip route add 172.24.0.2/32 dev eth0
ip route add 172.25.0.2/32 dev eth1

Шаг 4: Проверка

Теперь мы можем проверить, что маршрутизация работает. Попробуйте ввести в браузере http://localhost:80/ и http://localhost:8080/. Вы должны увидеть стандартную страницу Nginx. Если все работает, то маршрутизация настроена правильно.

Заключение

В этом гайде мы рассмотрели, как настроить проброс порта 80 на контейнере Docker с двумя сетевыми интерфейсами и маршрутизацию между ними. Это может быть полезно, если у вас есть несколько сетей с разными настройками безопасности, и вы хотите разместить приложение на одной из них.

Смотри также: