Я использую Docker для Mac. Я запускаю микросервис на основе nodejs в контейнере Docker. Я хочу протестировать микросервис узла через браузер. Как получить IP-адрес запущенного контейнера докеров?
docker
containers
docker-for-mac
user3067875
источник
источник
Ответы:
Если вы не хотите сопоставлять порты вашего хоста с контейнером, вы можете получить прямой доступ к ip диапазона докеров для контейнера. Этот диапазон по умолчанию доступен только с вашего хоста. Вы можете проверить данные своей контейнерной сети, выполнив:
Наверное, лучше отфильтровать:
Обычно диапазон ip докеров по умолчанию равен
172.17.0.0/16
. Ваш хост должен быть,172.17.0.1
а ваш первый контейнер должен быть,172.17.0.2
если все в порядке и вы не указали никаких специальных сетевых параметров.РЕДАКТИРОВАТЬ Еще один более элегантный способ использования функций докеров вместо «обмана bash»:
источник
localhost
:)http://172.17.0.2:anyPort
хоста. Конечно, если вы хотите получить к нему доступ, используя localhost на хосте, вы должны сопоставить порты. Посмотрим, чего хочет ОП.docker run --name struts --rm -i tomcat
2. Получите IP-адрес вашего контейнера (если у вас только один):docker inspect struts | grep '"IPAddress"' | head -n 1
3. Откройте его в браузере хостаhttp://x.x.x.x:8080
. Вы можете увидеть страницу по умолчанию Apache Tomcat.Используйте
--format
опцию, чтобы получить только IP-адрес вместо всей информации о контейнере:источник
Для современных движков докеров используйте эту команду:
а для старых двигателей используйте:
источник
если вы хотите получить его прямо в контейнере, вы можете попробовать
источник
Вы можете запустить свой контейнер с флагом
-P
. Это «назначает» случайный порт открытому порту вашего изображения.С помощью
docker port <container id>
вы можете увидеть случайно выбранный порт. Тогда доступ возможен черезlocalhost:port
.источник
В моем случае на Mac работало следующее :
Я не мог получить доступ к IP-адресам контейнера непосредственно на Mac. Мне нужно использовать
localhost
с переадресацией портов, например, если порт 8000, тоhttp://localhost:8000
См. Https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
Исходный ответ был от: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949
источник
Вы не можете получить доступ к IP-адресу докера извне этого хост-компьютера. Если ваш браузер находится на другом компьютере, лучше сопоставить порт хоста с портом контейнера, передав
-p 8080:8080
команду run.Передавая,
-p
вы можете сопоставить порт хоста с портом контейнера, и прокси настроен для пересылки всего трафика для указанного порта хоста в назначенный порт контейнера.источник