Я пытаюсь получить доступ к странице приветствия Wildfly, работающей на контейнере Docker в Windows 10 Pro. Вот что я сделал:
Вытащил изображение:
docker pull jboss/wildfly
Запустите контейнер Wildfly (это работает нормально, в журнале Wildfly я вижу, что он запущен правильно):
docker run -it -p 8080:8080 jboss/wildfly
Найдите идентификатор контейнера:
docker ps
Проверьте IP-адрес:
docker inspect -f "{{ .NetworkSettings.IPAddress }}" cac63ed21d78
IP-адрес есть 172.17.0.2
, в браузере я захожу на http://172.17.0.2:8080/, но браузер зависает и время ожидания. Что мне не хватает?
ОБНОВИТЬ
Я тоже пытался с, 127.0.0.1:8080
и это тоже не работает
UPDATE2
Консольный журнал:
docker --version
#Docker version 19.03.1, build 74b1e89e8a
docker run hello-world
#Hello from Docker!
docker run --detach --publish 8080:80 --name webserver nginx
#Unable to find image 'nginx:latest' locally
#latest: Pulling from library/nginx
#8ec398bc0356: Pull complete
#465560073b6f: Pull complete
#f473f9fd0a8c: Pull complete
#Digest: sha256:b2d89d0a210398b4d1120b3e3a7672c16a4ba09c2c4a0395f18b9f7999b768f2
#Status: Downloaded newer image for nginx:latest
#c5cdb6de11240b5fe33bc424779721e1b44948797fd6ff389004d0766b71dd17
docker ps
#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5cdb6de1124
#nginx "nginx -g 'daemon of" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp webserver
10.0.75.x
внешний адрес, и браузер пытается найти его в Интернете?docker --version
, 2.docker run hello-world
, 3.docker run --detach --publish 8080:80 --name webserver nginx
, 4. затем попробуйте открыть localhost: 8080localhost:8080
и это время ожидания.docker ps
показываетCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5cdb6de1124 nginx "nginx -g 'daemon of" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp webserver
Ответы:
По умолчанию при создании контейнера он не публикует свои порты во внешнем мире. Сеть 172.17.XX является внутренней. Если вам нужно привязать IP-адрес к контейнеру ip run хоста с флагом -p, вот так:
-p 8080: 8080
источник
От: https://docs.docker.com/docker-for-windows/networking/
Так что он должен быть доступен с http: // localhost: 8080
Если это не сработает, попробуйте пример Windows
Который должен быть доступен http: // localhost: 80
https://docs.docker.com/docker-for-windows/index#explore-the-application-and-run-examples
Если даже это не помогло, попробуйте:
И используйте http: // [docker-machine-ip]: 80
источник
Ключевая информация
Docker container in Windows 10 Pro
- это очень общая спецификация того, как работает ваш Docker в Windows. Там может быть много вариантов , например ,Docker for Windows
с / безLinux containers
,Docker toolbox
удаленный экземпляр, ....Как правило, контейнеры Docker в Windows обычно работают на какой-то виртуальной машине (Hyper-V, Virtualbox, ...). Таким образом, существует дополнительный сетевой уровень, который может быть недоступен непосредственно из сетевого пространства имен Windows. Но связанный пример работает на Linux-машине, где этот дополнительный сетевой уровень не существует. И это причина, почему пример копирования / вставки Linux не работает в Windows. Так что запустите контейнер как обычно и выставьте порт 8080:
Но IP-адрес для доступа будет другим, и IP-адрес контейнера нельзя использовать, потому что эта внутренняя докерная сеть, скорее всего, недоступна из Windows. Скорее попробуйте использовать IP вашей ОС Windows. В конце концов, проверьте документацию используемого
Docker on Windows
решения и найдите, какой IP используется для открытых портов.Если у вас есть продвинутые навыки работы с сетью Windows / Linux, вы можете каким-то образом маршрутизировать / переадресовывать порт из пространства имен контейнерной сети через промежуточный сетевой уровень виртуальной машины на сетевой уровень Windows. Но это может быть довольно сложно.
источник
8080:8080
то, что в теории должно работать, но это не так. Я не знаю о сети, с чего мне начать искать?There is no docker0 bridge on Windows: Because of the way networking is implemented in Docker Desktop for Windows, you cannot see a docker0 interface on the host. This interface is actually within the virtual machine.
. Пожалуйста, разберитесь с этим ограничением.У меня был коллега, работающий в системе Windows, которая столкнулась с той же проблемой. Он приложил много усилий и просто не мог никуда добраться. Кажется, с Docker Desktop для Windows происходит много странных вещей. Мы наконец-то просто установили подсистему Linux для Windows и установили там докер, и с тех пор это работало для него как прелесть. Если вы хотите придерживаться Windows, и вы не против работать с подсистемой Linux, я предлагаю вам пойти по этому пути. Мы пошли дальше, чем предлагал Ян Гарадж, и обнаружили, что это пустая трата времени. Docker Desktop для Windows призван стать средой, в которой вы полностью работаете с ней - с помощью контейнеров разработчика и т. Д. Хозяин-контейнер - это проблема.
источник