Как исправить ошибку «Не удалось установить новое соединение при запуске двух докеров»? - PullRequest
0 голосов
/ 29 января 2019

HTTPConnectionPool (host = 'localhost', port = 5000): превышено максимальное количество повторов с URL: / xyz / 123 / (вызвано NewConnectionError (': не удалось установить новое соединение: [Errno -2] Nameили служба неизвестна ',))

Я просмотрел много вопросов о переполнении стека, содержащих эту ошибку, но ни один из них не соответствует моей конкретной проблеме.

Я получаю вышеуказанную ошибкупри отправке почтового запроса из одного док-контейнера в другой док-контейнер.Мой первый контейнер работает через порт 8000, а второй - через порт 5000. Также мой первый контейнер работает через docker-compose, а второй - через docker и не использует файл docker-compose.Что является причиной этой ошибки и как бы вы ее исправили?Заранее спасибо.

РЕДАКТИРОВАТЬ: я изменил URL-адрес поста, чтобы быть именем моего док-контейнера IE.http://festive_hugle/xyz/123/

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Я понял это.Мне пришлось изменить следующее:

  1. запустил второй докер-контейнер в той же сети через docker run -d --net network_name img_name
  2. запустил Docker Inspect, чтобы получить IP-адрес контейнера: docker inspect container_id
  3. изменил почтовое имя хоста на IP-адрес контейнера и включил порт, на котором работал контейнер.http://172.20.0.5:5000/xyz/123/

Это позволило первому контейнеру отправить почтовый запрос второму.

0 голосов
/ 29 января 2019

по умолчанию, docker-compose создает выделенную сеть для сервисов, которые вы используете.Когда вы запускаете экземпляр Docker, используя docker run и не указываете, в какой сети следует запускать, он будет работать в сети default.
Это может быть проблемой, и вы можете решить ее, запустив экземпляр Docker.которые не используют compose в сети docker-compose.Чтобы получить имя сети, вы можете запустить

docker inspect <compose_container_id> | grep -i "NetworkMode"   

Как только вы получите имя сети, вы можете запустить контейнер, подключиться к сети и связать со службами экземпляров compose.

docker run -it --network <network_name> --link <compose_container_name>  <docker_image>

С другой стороны, я не знаю, почему вставленная вами ошибка показывает, что вы пытаетесь подключиться к localhost.

HTTPConnectionPool (host = 'localhost', port = 5000)
В случае, если вы хотите подключиться к сопоставленному порту хоста, вы должны указать ip хоста, который подключен к контейнерусеть.

Надеюсь, вы найдете это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...