我有一个应用程序侦听端口4000,需要在--net=host
的容器中运行它,以便简化对主机上服务的访问。根据文档和关于--net=host
的许多类似问题,我应该能够轻松地访问我的应用telnet localhost 4000
,但事实并非如此:容器中的应用无法访问。如果我使用--net=host
和-p 4000:4000
运行容器,它可以正常运行,但不幸的是我无法使用它。
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
答案 0 :(得分:1)
请记住,在Mac / Windows上使用瘦VM,因为Docker需要Linux内核才能运行。因此,使用--net=host
将无法正常工作,实际上这将使用VM的主机网络。您应该能够通过访问docker VM的端口4000来验证这一点。
对于您的用例,我建议将其他服务移植到docker,如果这不是运行像dnsmasq这样的本地DNS解析器的选项应该做的。只需让一些域名解析为您的Mac主机IP。