使用docker--net=";主持人;我可以访问端口

使用docker--net=";主持人;我可以访问端口,docker,Docker,当我为侦听端口8090的web应用程序运行容器时 与 docker运行-p 8090:8090-h=%ComputerName%mycontainer 然后我可以访问上的服务 如果我用 docker运行--net=“host”-h=%ComputerName%mycontainer 那么我就无法访问上的服务了 为什么 不应该假设容器与-net=“host”共享主机的网络,那么为什么我不能与--net=“host”访问这不是--net=host所做的 在你的第一个例子中;您正在将容器的端口映射到您

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

docker运行-p 8090:8090-h=%ComputerName%mycontainer

然后我可以访问上的服务

如果我用

docker运行--net=“host”-h=%ComputerName%mycontainer

那么我就无法访问上的服务了

为什么

不应该假设容器与-net=“host”共享主机的网络,那么为什么我不能与--net=“host”访问这不是
--net=host
所做的

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

在第二个例子中;您删除了-p选项,因此现在不会映射任何端口


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

可能与8090手动打开防火墙的版本重复?