使用docker--net=";主持人;我可以访问端口
当我为侦听端口8090的web应用程序运行容器时 与 docker运行-p 8090:8090-h=%ComputerName%mycontainer 然后我可以访问上的服务 如果我用 docker运行--net=“host”-h=%ComputerName%mycontainer 那么我就无法访问上的服务了 为什么 不应该假设容器与-net=“host”共享主机的网络,那么为什么我不能与--net=“host”访问这不是使用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所做的 在你的第一个例子中;您正在将容器的端口映射到您
--net=host
所做的
在你的第一个例子中;您正在将容器的端口映射到您的主机-这允许您通过容器的服务进行访问
在第二个例子中;您删除了-p选项,因此现在不会映射任何端口
--net=host
的作用是允许您的容器查看主机上的端口,就好像它们是容器的本地端口一样。假设您有一个数据库运行在主机的端口5000上,而它不在Docker容器中-您可以通过localhost:5000
在容器上访问它。(注意-对此有一些警告;例如Mac Docker实际上需要Docker.for.Mac.localhost
)可能与8090手动打开防火墙的版本重复?