Виртуальная машина Centos с Docker становится недоступной при попытке подключения к самой себе

У меня Docker работает на виртуальной машине Centos с мостовой сетью. Бег

ifconfig

показывает, что моя виртуальная машина получает действующий IP-адрес. Теперь я запускаю некоторое программное обеспечение в контейнере / образе докера (которое работает в других конфигурациях докера / сети). Некоторые из моих кодов, работающих в контейнере докеров, используют SSL-соединение (java) для подключения к самому себе. Во всех других конфигурациях запуска это работает отлично. Но при работе в мостовом режиме с Centos VM и docker-compose я получаю исключение SSL Connect, ошибку: Host unreachable. Я могу ping и ssh в виртуальную машину с тем же IP-адресом, и все это работает нормально. Мне жаль, что я не могу опубликовать фактическую настройку / код и сценарии, так как их слишком много для публикации, и это тоже проприетарно.

Я сбит с толку - почему я получаю сообщение о недоступности хоста в вышеупомянутой конфигурации?


person Nena    schedule 24.08.2016    source источник
comment
подключить к себе что значит? 127.0.0.1?   -  person Nathaniel Waisbrot    schedule 25.08.2016
comment
это означает использование IP-адреса машины ИЛИ localhost. Либо один терпит неудачу. Это потому, что докер, похоже, создал набор IP-адресов для каждого контейнера. Но как я могу настроить его с помощью docker-compose yml для использования одного и того же IP-адреса для всех контейнеров, чтобы они могли разговаривать друг с другом и был возможен внешний доступ? Это вызывает у меня много проблем. Я попытался настроить сеть в режиме моста, но это вызывает другие проблемы с не обнаруженными перенаправлениями, и снова попытка подключиться через IP-адрес машины к контейнеру не удалась.   -  person Nena    schedule 26.08.2016
comment
Можете ли вы опубликовать свой файл docker-compose? И вы говорите, что тот же контейнер Docker, работающий на Ubuntu, работает, но на Centos он не работает?   -  person Nathaniel Waisbrot    schedule 26.08.2016
comment
2 настройки: одна на моем Mac, с установленным докером на Mac и созданная по умолчанию машина докера vmware. Он отлично работает без дополнительной настройки сети. IE, мое приложение может отправлять сообщения самому себе по своему внешнему IP-адресу и может взаимодействовать со своими контейнерами cassandra и jdbc. Другая установка, которая у меня есть, - это виртуальная машина Centos с докером, работающим на виртуальной машине (без докер-машины). Эта настройка (при более внимательном рассмотрении того, почему она не работает) показывает, что докер создал сеть для контейнеров, и поэтому контейнер приложения не может подключаться к HTTP через свой внешний IP-адрес или localhost.   -  person Nena    schedule 26.08.2016


Ответы (2)


К вашему сведению, я решил проблему на centos, используя стандартные «мостовые» контейнеры, предоставляемые Docker, но добавив следующее в мою конфигурацию firewalld:

firewall-cmd --permanent --zone=trusted --add-interface=docker0
firewall-cmd --reload
service firewalld restart

Вам также может потребоваться открыть порт, чтобы разрешить внешнюю связь, например:

firewall-cmd --zone=public --add-port=8080/tcp --permanent
person Nena    schedule 29.08.2016
comment
Ты спас мне день! - person xneg; 31.07.2018
comment
При этом и попытке перезапустить докер на redhat я получаю сообщение об ошибке, как описано здесь: superuser.com/questions/1608853/ В основном его ответ и ваш ответ прямо противоположны. Была ли у вас такая же проблема с перезапуском докера? Если да, то это работоспособное решение. Docker улучшил поддержку firewalld за последние 5 лет? Кажется, у меня все еще та же проблема. - person Silver; 05.05.2021

Мое решение состояло в том, чтобы переключиться на виртуальную машину Ubuntu, потому что переключение моего докера на «мостовую» сеть по умолчанию сломало мои псевдонимы, которые мне действительно были нужны.

Единственный оставшийся вопрос: почему после настройки firewalld сеть, настроенная пользователем на docker-compose, не может получить доступ к внешнему IP-адресу, что вынуждает нас переключиться на мостовую сеть по умолчанию.

person sercasti    schedule 08.02.2019
comment
Вы получили на это ответ? Я тоже столкнулся с той же проблемой. настроенная пользователем сеть на docker-compose не может получить доступ к внешнему IP-адресу - person Niraj; 21.08.2020