docker容器中的应用程序不能在net = host的监听端口上访问
我有一个应用程序监听4000端口,需要在一个容器中运行--net=host
来简化对主机服务的访问。 根据文档和许多类似的问题--net=host
,我应该能够像telnet localhost 4000
一样简单地访问我的应用程序,但情况并非如此:容器中的应用程序无法访问。 如果我运行容器w / out --net=host
和-p 4000:4000
,它的工作原理,但不幸的是,我不能去。
- Docker版本:
17.03.1-ce-mac5 (16048)
- 操作系统:
OS X 10.12.4
-
docker run --rm -it --net=host -v /app/dir:/opt/app --name app-dev bitwalker/alpine-elixir-phoenix:1.4.2 iex -S mix phx.server
run命令:docker run --rm -it --net=host -v /app/dir:/opt/app --name app-dev bitwalker/alpine-elixir-phoenix:1.4.2 iex -S mix phx.server
请记住,在Mac / Windows上,由于Docker需要Linux内核才能使用瘦虚拟机。 因此,使用--net=host
将无法按预期运行,本质上这将使用虚拟机的主机networking。 您应该能够通过访问docker VM的端口4000来validation这一点。
为了您的使用情况,我build议将其他服务移植到docker,如果这不是一个运行本地DNSparsing程序(如dnsmasq)的应用程序应该做的伎俩。 只是让一些域名parsing到您的Mac主机IP。