Подключитесь к докер-машине, используя "localhost"
Есть определенные функции, такие как рабочие службы JavaScript без https, которые работают только на localhost, но когда я запускаю свое приложение внутри контейнера докеров, используя docker-compose, который работает поверх докер-машины, мне нужно подключиться к нему, используя адрес, который я получаю от
docker-machine ip default
Есть ли способ сопоставить localhost
с тем, что ip?
Ответы
Ответ 1
Вы можете добавить порт VirtualBox для сопоставления порта на хосте докера на локальном компьютере.
Предполагая, что ваша докерная машина называется "по умолчанию", и вы хотите сопоставить порт 80 в своем контейнере с localhost: 8888, вы можете запустить:
vboxmanage modifyvm default --natpf1 "nameformapping,tcp,,8888,,80"
или если VM работает
vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80"
Это также можно сделать в интерфейсе VirtualBox в настройках виртуальной машины. Вот документ из VirtualBox https://www.virtualbox.org/manual/ch06.html#network_nat
Вам также понадобится сопоставить порт на вашем контейнере с портом на докере, вы это сделаете при запуске контейнера (это также предполагает, что у вас есть команда "EXPOSE 80" в вашем Dockerfile
docker run -p 80:80 mycontainer
https://docs.docker.com/engine/reference/run/
Смотрите также: https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md
Ответ 2
Редактирование вашего файла hosts
приводит к тому, что ваш локальный компьютер смотрит только на IP-адрес, указанный для домена. Таким образом, вы можете добавить ip-адрес файла docker-machine
в файл etc\hosts
на вашем локальном компьютере и сопоставить порт 80
в контейнере с портом 80
на docker-machine
.
Пример:
1) Получить IP-адрес хост-хоста
$ docker-machine ip default
192.168.99.100
2) Добавьте эту строку в файл etc/hosts
на вашем локальном компьютере
192.168.99.100 domain.com
3) Убедитесь, что ваш компьютер разрешает домен.
$ ping domain.com
PING domain.com (192.168.99.100): 56 data bytes
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.294 ms
64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.99.100: icmp_seq=2 ttl=64 time=0.556 ms
64 bytes from 192.168.99.100: icmp_seq=3 ttl=64 time=0.270 ms
Примечания:
- Для пользователей Windows файл hosts локализован в
C:\Windows\System32\Drivers\etc\hosts
- Если вы хотите поддерживать несколько доменов только в одной докере-машине, вы можете создать прокси-контейнер с nginx внутри других ваших контейнеров.
Ответ 3
Самый простой способ - пересылка порта из VBox
Настройки- > Сеть- > Адаптер 1- > Перенаправление портов
затем добавьте Name, в хосте добавьте 127.0.0.1 (для локального хоста), затем соответствующие привязки портов и перезапустите виртуальную машину.
![введите описание изображения здесь]()