使用net = host在侦听端口上无法访问docker容器中的应用程序

时间:2017-05-04 14:26:22

标签: docker docker-networking

我有一个应用程序侦听端口4000,需要在--net=host的容器中运行它,以便简化对主机上服务的访问。根据文档和关于--net=host的许多类似问题,我应该能够轻松地访问我的应用telnet localhost 4000,但事实并非如此:容器中的应用无法访问。如果我使用--net=host-p 4000:4000运行容器,它可以正常运行,但不幸的是我无法使用它。

  • Docker版本:17.03.1-ce-mac5 (16048)
  • 操作系统:OS X 10.12.4
  • docker 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

1 个答案:

答案 0 :(得分:1)

请记住,在Mac / Windows上使用瘦VM,因为Docker需要Linux内核才能运行。因此,使用--net=host将无法正常工作,实际上这将使用VM的主机网络。您应该能够通过访问docker VM的端口4000来验证这一点。

对于您的用例,我建议将其他服务移植到docker,如果这不是运行像dnsmasq这样的本地DNS解析器的选项应该做的。只需让一些域名解析为您的Mac主机IP。