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

Fer*_*ola 5 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

TJ *_*dle 4

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

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

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

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