Рейтинг:0

Не удается получить доступ к контейнеру Docker из другого контейнера Docker через IP-адрес хоста

флаг sh

У меня есть сервер, на котором работает Wireguard VPN. 10.0.1.254/24 и докер работает 172.17.0.1/16.

Мой docker-compose.yaml выглядит так (упрощенно):

Сервисы:
  контейнер_а:
    изображение: nginx: последний
    порты:
      - '10.0.1.254:80:80'

  контейнер_b:
    изображение: альпийский: последний

Теперь я могу связаться с nginx, используя wget http://10.0.1.254 на хосте. Я также могу получить доступ к нему таким же образом от узла VPN (например, 10.0.1.1). Но когда я пытаюсь сделать это из другого контейнера Docker (например, docker compose exec container_b wget http://10.0.1.254) Я получаю тайм-аут. Однако я могу пропинговать хост (docker compose exec container_b ping 10.0.1.254).

Я предполагаю, что это как-то связано с тем, как Docker отображает порты на хосте. Но я не могу найти много информации об этом. Кто-нибудь знает, почему это не работает?

djdomi avatar
флаг za
Вы уверены, что используете правильные порты и службы?
Рейтинг:0
флаг sh

Оказывается, у меня все еще был установлен UFW, который был настроен на разрешение входящего подключения к этому порту на WG0 интерфейс. Но система была достаточно умна, чтобы срезать путь от одного виртуального интерфейса Docker напрямую к другому, минуя это правило ПРИНЯТЬ для WG0 интерфейс.

Я понял это, используя хвост +1f /var/log/ufw.log, а затем запустить неудачный wget команду из другого контейнера Docker.

В моем случае решением было просто отключить UFW (sudo ufw отключить), так как я им все равно не пользуюсь.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.