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> Дополнительно> Переадресация портов
- Нажмите "+", чтобы добавить новое правило
- Установить хост-порт
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. Мой обходной путь довольно прост:
- проверьте IP вашего докера по умолчанию
$ docker-machine ip default
192.168.99.100
-
Перейдите на виртуальную машину Oracle, чтобы настроить переадресацию портов. Убедитесь, что сетевым параметром является NAT, и добавьте переадресацию портов. IP-адрес хоста: 127.0.0.1, IP-адрес гостя: 192.168.99.100, порт настроен на 80, как это
-
Повторите попытку в вашем браузере и запустите 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:
- Откройте VirtualBox Manager (из запуска программ в Windows найдите
VirtualBox Manager
) - Выберите образ вашего VirtualBox на Docker Machine (например, по умолчанию)
- Откройте Настройки → Сеть → Дополнительно → Переадресация портов
- Добавьте имя приложения, желаемый порт хоста и гостевой порт,
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.