使用docker --net =" host"我可以访问端口

时间:2018-04-03 13:29:53

标签: docker

当我为侦听端口8090的Web应用程序运行容器时

使用

docker run -p 8090:8090 -h =%ComputerName%mycontainer

然后我可以访问http://localhost:8090

上的服务

如果我用

启动容器

docker run --net =" host" -h =%ComputerName%mycontainer

然后我无法访问http://localhost:8090

上的服务

为什么??

不应该用-net =" host"容器共享主机的网络,那么为什么我无法使用--net =" host"访问http://localhost:8090

1 个答案:

答案 0 :(得分:1)

这不是--net=host所做的。

在你的第一个例子中;您正在将容器的端口映射到主机 - 这允许您通过容器的服务。

在第二个例子中;删除-p选项,以便现在没有映射端口

--net=host的作用是允许您的容器查看主机上的端口,就好像它们是容器的本地端口一样。所以说你有一个在你的主机的端口5000上运行的数据库,它不在Docker容器中 - 你可以通过localhost:5000访问容器上的 。 (注意 - 这有一些警告;例如Docker for Mac实际上需要docker.for.mac.localhost