Как использовать уникальные локальные IP-адреса для каждого контейнера Docker, чтобы решить проблемы с пробросом портов?

Я прохожу курс “Сети и VPN” здесь и столкнулся с проблемой, касающейся использования уникальных локальных IP-адресов для контейнеров Docker, чтобы обойти ограничения переадресации портов.

У меня есть NAT-сеть за туннелем Proton VPN WireGuard, и я хочу перенаправить трафик для сева на порт 6881, одновременно обеспечивая удаленный доступ к веб-сервисам на моих контейнерах. Я использую Traefik для проксирования трафика к различным контейнерам в зависимости от префиксов путей, но у меня возникает проблема: нужно проэкспонировать порт 6881 для контейнера qBittorrent, что, похоже, нарушает работу веб-сервисов, так как Traefik слушает на портах 80 и 443.

Можно ли использовать локальные IP через Docker MACvlans или IPVlans, чтобы сохранить доступ к веб-сервисам и при этом реализовать перенаправление трафика к контейнеру qBittorrent? И как правильно настроить dstnat, чтобы он не просто перенаправлял весь трафик на сервер, а понимал, что соединение для сева должно идти исключительно к контейнеру qBittorrent?

Благодарю за любые советы и рекомендации!

Привет! Слушай, я тут пытался реализовать то, как использовать уникальные локальные IP-адреса для контейнеров Docker, чтобы не заморачиваться с пробросом портов. Честно, думал, что всё будет легко, но на практике вышло не очень.

Что я пробовал

  1. Создание сети: Создал пользовательскую сеть в Docker с диапазоном IP-адресов. Вот этот команду запускал:

    docker network create --subnet=192.168.1.0/24 my_custom_network
    

    Вроде всё идет, но когда пытался запускать контейнеры с указанием своих IP-шников, что-то пошло не так.

  2. Запуск контейнеров: Запускал контейнеры с флагом --net для подключения к созданной сети. Вот такая команда была:

    docker run -d --net my_custom_network --ip 192.168.1.10 my_image
    

    Но, блин, контейнеры не могли взаимодействовать друг с другом так, как ожидал. Порты либо не открывались, либо просто не пинговали.

  3. Настройка маршрутизации: Пытался даже с маршрутами поиграться, но это вообще оказалось выше моих сил. Никакие команды не помогали уверенно настроить, чтобы все работало гладко.

Что не получилось

Короче, итог таков: контейнеры получали IP-адреса, но между собой не могли нормально общаться. Либо у всех был один и тот же порт, либо что-то с маршрутизацией не так. Я даже логи смотрел, но там только шум. Не знал, что железо может так выносить мозг!

Чуть позже…

Поискал инфу, и нашел курсы на Новая главная. Они действительно питали шепотом и подсказками! Надеюсь, там есть что-то, что поможет разобраться с этой проблемой и понять, как правильно настроить свои контейнеры с уникальными IP-адресами. Если ты сам заинтересован, загляни, может, там что-то полезное найдёшь!

Вот такие дела. Буду дальше пробовать, надеюсь, получится раскрутить эту неполадку!