Подтвердить что ты не робот

Доступ к хост-машине как localhost из контейнера Docker, который также находится в boot2docker vm

Предположим, что у меня есть сервер, работающий на порту 8000 на OSX. Как мой контейнер Docker может получить доступ к нему через localhost:8000? Я не могу изменить имя хоста, так как приложение в контейнере не входит в мой контроль.

Я прочитал это предыдущее обсуждение использования --net="host" для контейнера для доступа к сети хост-машины. Тем не менее, я на OSX, а Docker работает внутри виртуальной машины, поэтому локальный хост из контейнера Docker с --net="host" переходит к виртуальной машине, а не к моей реальной машине.

Затем я попробовал обходной путь для переадресации портов следующим образом: VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,8000,,8000"; безрезультатно.

Любое предложение будет принята с благодарностью.

4b9b3361

Ответ 1

Благодаря ответу palimpestor я понял:

Вместо --net="host" используйте --add-host="localhost:10.0.2.2"

Действительно:

  • 10.0.2.2 - это шлюз по умолчанию, определенный для гостевого сетевого интерфейса в режиме NAT (ссылка).
    Читайте: это ваш хост, видимый из boot2docker.
  • --add-host... добавляет localhost 10.0.2.2 в /etc/hosts (reference)

Примечание: вам нужно настроить адаптер NAT в настройках виртуальной машины Boot2docker VM (я сделал это через GUI, не знаю CLI).

Ответ 2

Вместо запуска с --net="host" попробуйте --add-host="localhost:192.168.59.3", который является IP-адресом хоста boot2docker.