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

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

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

Я что-то упустил?

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

EDIT:

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

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

Ответ 1

Docker Toolbox не получает столько удобств, как Docker для Windows, но вы правы в использовании его с тех пор, как вы находитесь в редакции Home.

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

Итак, если вы запустите docker run -p 80:80 nginx

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

Тогда переход в http://192.168.99.100 должен работать.

Ответ 2

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

В VirtualBox:

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

Запустите команду:

docker run -p 8080:8080 ${image_id}

Ответ 3

Я следовал учебнику по докеру для 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 default

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 должен быть доступен в виртуальной машине докера, поэтому нам нужен этот параметр переадресации порта, чтобы получить к нему доступ непосредственно в браузере хост-машины.

Ответ 4

Вы можете использовать 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. Добавьте имя приложения, желаемый порт хоста и гостевой порт, ie, app name: nginx, host: 127.0.0.1, host port: 80, guest port: 80

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

docker-machine start default

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

Посмотрите здесь для деталей.

Ответ 5

Чтобы сопоставить порты, которые ожидаются как 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 map, а не внутренний порт контейнера. Вы сопоставляете хост → VM, затем Docker отображает VM → контейнер.

Смотрите документы VirtualBox.