当我为侦听端口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。
答案 0 :(得分:1)
这不是--net=host
所做的。
在你的第一个例子中;您正在将容器的端口映射到主机 - 这允许您通过容器的服务。
在第二个例子中;删除-p选项,以便现在没有映射端口。
--net=host
的作用是允许您的容器查看主机上的端口,就好像它们是容器的本地端口一样。所以说你有一个在你的主机的端口5000上运行的数据库,它不在Docker容器中 - 你可以通过localhost:5000
访问容器上的 。 (注意 - 这有一些警告;例如Docker for Mac实际上需要docker.for.mac.localhost
)