当我为侦听端口 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
这不是--net=host做的事。
在你的第一个例子中;您正在将容器的端口映射到您的主机 - 这允许您通过容器的服务。
在第二个例子中;您删除了 -p 选项,因此现在没有映射任何端口。
它的--net=host作用是允许您的容器查看主机上的端口,就好像它们是容器本地的一样。假设您有一个数据库在主机的端口 5000 上运行,并且它不在 Docker 容器中 - 您可以通过localhost:5000. (注意 - 对此有一些注意事项;例如 Docker for Mac 实际上需要docker.for.mac.localhost)
| 归档时间: |
|
| 查看次数: |
5435 次 |
| 最近记录: |