Подключиться к процессу докера с хост-машины

При настройке контейнера докеров (3 контейнера) с использованием определяемой пользователем сети моста.

  • Я могу получить доступ к контейнеру из другого контейнера (используя как IP-адрес, так и имя контейнера).

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

Смотрите мой докер создать файл

Настроен на windows 8

Из 4 контейнеров, упомянутых в файле набора, ни один не доступен с хост-машины. (без использования имен контейнеров или IP). Хотя я могу получить доступ к одному контейнеру из другого, используя как IP-адрес, так и имя контейнера.

Измените свой вопрос так, чтобы он содержал минимальный воспроизводимый пример; в частности, отредактируйте свой вопрос, чтобы включить подмножество вашего docker-compose.yml, которое демонстрирует проблему (не просто включать ссылку) и объясняет, какой контейнер фактически недоступен и как вы пытаетесь добраться до него.

David Maze 10.09.2018 12:02

Вы используете Docker для Windows или Docker Toolbox?

jannis 13.09.2018 10:09

Я использую Docker Toolbox.

Rohit 14.09.2018 08:25
0
3
264
2

Ответы 2

Я предполагаю, что вы пытаетесь получить доступ к своему контейнеру с помощью имени службы, объявленного в файле создания, но вы не можете сделать это за пределами сети bridge, объявленной в файле создания.

С вашего хоста вам нужно использовать IP-адрес контейнера, и вы можете получить его с помощью следующей команды:

docker inspect <container> -f '{{.NetworkSettings.Networks.<network>.IPAddress}}'

Очевидно, вам нужно заменить заполнитель <container> на имя вашего контейнера, а <network> - на имя вашей сети.

Например, на основе вашего файла servers.yml вы можете получить IP-адрес zookeeper с помощью docker inspect zookeeper -f '{{.NetworkSettings.Networks.bridge.IPAddress}}'

См. документация докеров для получения более подробной информации о команде inspect и

Я тоже пробовал. Но он также недоступен с использованием IP.

Rohit 13.09.2018 06:24

У меня нет особого представления о настройке Docker в Windows, но я предполагаю, что ваша служба прослушивает localhost (внутри контейнера), поэтому он недоступен извне

Чтобы получить доступ к любой службе, запущенной в контейнере извне, вам необходимо связать порт службы с IP-адресом 0.0.0.0.

Пример:

Если Nginx работает на порту 80 внутри контейнера, но адрес привязки - 127.0.0.1 или localhost (он будет доступен только изнутри контейнера, а не снаружи или с хост-машины), если вы хотите получить доступ к вашему nginx извне, вам необходимо изменить его привязать адрес localhost к 0.0.0.0

Надеюсь, это поможет.

Другие вопросы по теме