Доступ к хост-машине как 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";
безрезультатно.
Любое предложение будет принята с благодарностью.
Ответы
Ответ 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.