Docker Toolbox - Localhost не работает


100

Поэтому я использую Docker Toolbox, потому что на моем компьютере нет Hyper-V, поскольку это не Windows 10 pro. Кажется, все работает нормально, но когда я пытаюсь открыть свой браузер, 0.0.0.0:80он всегда возвращает меня: этот сайт недоступен

Но когда я запускаю команду: docker container psя получаю следующее: это 0.0.0.0:80->80/tcpозначает, что этот адрес должен работать. Я искал проблемы с stackoverflow и github. Теперь я застрял.

Я что-то упускаю?

Спасибо, Марк

РЕДАКТИРОВАТЬ:

Использование docker-machine ip defaultвозвращает меня 192.168.99.100. Я запускаю его через порт 80. Я все равно получаю тот же результат, за исключением того, что адрес становится идентификатором контейнера:https://fd677edg12

Я бег этой команды на ЦМД , чтобы найти мой ipv4: cmd /k ipconfig /all. Поместите результат в порт, и он вернет то же самое:https://fd677edg12


1
0.0.0.0 не является фактическим адресом, это означает, что порт был привязан ко всем интерфейсам хоста докера (вашего компьютера с Windows). Попробуйте localhost: 80 или любой другой IP-адрес вашего компьютера: 80
fvu

@fvu Я по-прежнему получаю «этот сайт недоступен». Я тоже пробовал. docker-machine default ip -> 192.168.99.100Я поставил это в адрес: 192.168.99.100:80я все равно получаю тот же результат.
Марк

1
Если вас перенаправляют - это ваше приложение не работает. Предполагая, что докер запущен на том же компьютере, у вас должен быть
доступ

Ответы:


179

Docker Toolbox не так удобен, как Docker для Windows, но вы правильно используете его, поскольку используете домашнюю версию.

В Toolbox ничего не будет localhost, и будет 192.168.99.100по умолчанию, поскольку в VirtualBox работает виртуальная машина Linux.

Итак, если вы бежите docker run -p 80:80 nginx

(обратите внимание, мне пришлось опубликовать порт для 192.168.99.100прослушивания этого порта)

Тогда собираешься http://192.168.99.100работать.


Спасибо за ответ. Я следую вашим шагам, кроме добавленного docker run -p 80:80 -d nginx. Я иду по адресу, а он меня перенаправляет https://dev/, опять же говорит, что сайт недоступен. Я также хотел проверить, есть ли у меня что-нибудь, это hostsфайл (хотя я знаю, что это не localhost). Я там все прокомментировал.
Марк

После нескольких попыток, наконец, все заработало. К сожалению, я не совсем уверен, в чем проблема.
Марк

1
Дополнительная информация: Docker Toolbox (используемый в Windows 7, 8, 8.1 и 10 Home) на самом деле представляет собой просто сценарий запуска, обернутый вокруг docker-machinecli. Вы можете использовать, docker-machine --helpчтобы увидеть, что вы можете сделать для управления виртуальной машиной VirtualBox (или создать больше).
Брет Фишер,

64

Изначально у меня было несколько проблем с доступом к моим приложениям на localhost: 8080 при использовании DockerToolBox и OracleVM VirtualBox.

В VirtualBox:

  1. Щелкните соответствующий компьютер (возможно, тот, который помечен как "по умолчанию")
  2. Настройки
  3. Сеть> Адаптер 1> Дополнительно> Переадресация портов
  4. Нажмите "+", чтобы добавить новое правило.
  5. Установить порт хоста 8080и гостевой порт 8080; не забудьте оставить Host IP и Guest IP пустыми

Выполните команду:

docker run -p 8080:8080 ${image_id}

Из-за настройки CORS на удаленном API я должен работать как localhost: 8080. Так здорово, это так просто, спасибо!
phazei

1
Удивительный. Везде говорят, что это невозможно, но вот оно.
superPhreshHackerKid

Кроме того, убедитесь, что вы не напутали другие вещи, которые уже слушают этот порт или записи localhost / 127.0.0.1 в вашем файле hosts ( C:\Windows\System32\drivers\etc\hosts) - мне пришлось проверить оба, прежде чем это сработало для меня ;-)
msa

Работал как шарм!
Дагги Бланкс - Дуглас Мванги,

43

Я следил за учебником по докеру для Windows в https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell и застрял на шаге № 6 при тестировании nginx в веб-браузере . Кажется, я столкнулся с аналогичной проблемой, так как я также использую Windows Home и не имею Hyper-V. Мой способ обхода довольно прост:

  1. проверьте свой IP-адрес докера по умолчанию

$ docker-machine ip по умолчанию

192.168.99.100

  1. Перейдите в виртуальную машину Oracle, чтобы настроить переадресацию портов. Убедитесь, что настройка сети - NAT, и добавьте переадресацию портов. IP-адрес хоста: 127.0.0.1, гостевой IP-адрес: 192.168.99.100, порт настроен на 80, как это

  2. Повторите попытку в браузере и запустите http: // localhost или http://127.0.0.1 (также можно добавить порт 80). Он должен работать.

Дело в том, что IP-адрес nginx должен быть доступен в виртуальной машине докера, поэтому нам нужна настройка переадресации порта, чтобы получить к нему доступ непосредственно в браузере хост-машины.


2
Мне нужен был случай, когда HOST:CONTAINERпорты разные, например docker run --detach --publish 8081:80 --name webserver nginx. Обнаружил, что в этом случае мне нужно было перенаправить HOSTтолько порт, т.е. в настройках VirtualBox Host IP=127.0.0.1; Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081не так, 80как я предполагал раньше. Похоже, что на моем компьютере с Windows 7 с Docker Toolbox Docker пересылает из порта контейнера 80в, 192.168.99:8081а я перенаправляю из 192.168.99:8081в, localhost:8081потому что 192.168.99:8081ничего не показывает в веб-браузере.
and1er

13

Вы можете использовать localhostвместо 192.168.99.100, следуя инструкциям:

Шаг № 01:

docker-machine ip default

Вы увидите IP по умолчанию

Шаг # 02:

docker-machine stop default

Шаг # 03:

  1. Откройте VirtualBox Manager (при запуске программы в Windows найдите VirtualBox Manager )
  2. Выберите образ VirtualBox для вашей Docker Machine (например, по умолчанию)
  3. Откройте Настройки -> Сеть -> Дополнительно -> Перенаправление портов.
  4. Добавьте имя вашего приложения, желаемый порт хоста и гостевой порт i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

Шаг № 04: Теперь вы готовы запустить Docker Machine, выполнив следующие действия:

docker-machine start default

Затем просто запустите свой контейнер Docker, и вы сможете получить к нему доступ через localhost.

Подробности читайте здесь .


2

Чтобы сопоставить ожидаемые порты localhost вместо прямого обращения к IP-адресу докер-машины, вы можете использовать VirtualBox CLI.

Если виртуальная машина докер-машины (здесь называется default) запущена, добавьте и удалите такие правила:

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

Если виртуальная машина не запущена или вы хотите остановить ее перед изменением:

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

Где формат правила переадресации портов [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport> .

Обратите внимание, что в VirtualBox вы хотите сопоставить порт хоста карты Docker, а не внутренний порт контейнера. Вы сопоставляете хост -> виртуальную машину, затем Docker отображает виртуальную машину -> контейнер.

См. Документацию VirtualBox .


1

Это еще один простой способ избежать ввода ip 192.168.99.100. Зайдите C:\Windows\System32\drivers\etc\hostsи добавьте в конец файла:

192.168.99.100 docker.awesome или любое имя по своему вкусу.

Сохраните файл (у вас должны быть права администратора, поэтому не забудьте щелкнуть файл правой кнопкой мыши и запустить его от имени администратора, чтобы иметь возможность сохранить его при редактировании).

Перейдите к выбранному вами доменному имени, в данном случае docker.awesome: 8080, и вот оно.


0

После множества испытаний я смог получить эту доску объявлений.

  1. Я использовал команду docker run - docker run -p 4680: 8080 --name bb bulletinboard: 1.0 Здесь 4680 - номер порта localhost. 8080 - номер порта контейнера, порт, на котором контейнер будет прослушивать. Этот номер порта упоминается в команде EXPOSE в файле Dockerfile.

  2. Затем перейдите в веб-браузер и введите 192.168.99.100:4680

Здесь 192.168.99.100 - это IP-адрес докер-машины (используйте команду -> docker-machine ip)

  1. После этого страница вашего браузера должна открыться для -

введите описание изображения здесь

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.