Gut*_*iro 14 docker docker-for-windows
我正在阅读docker API并尝试创建一个简单的容器并公开1个端口.
在我的示例中,我有一个应用程序,它侦听容器内的TCP端口9595
,我想从外部世界(即容器的主机)端口访问它9090
.
在创建容器我有"ExposedPorts": { "9595/tcp: {}" }
和"PortBindings": { "9595/tcp": [{ "HostPort": "9090" }] }
.
所以,如果我从主机上访问http://container_internal_ip:9595
它的工作原理!但是,当我访问时http://localhost:9090
,这是我期望使用此端口映射功能,它不起作用...
在跑步的时候,docker port containerID
我9595/tcp -> 0.0.0.0:9090
应该这意味着,when connecting to any IP on the host, at port 9090, forward to the container in port 9595
.
那么,这里有什么问题?为什么我不能连接到9090?
我感谢任何澄清.
请发布您正在使用的 docker 命令。
如果您使用 Docker Toolbox 或 Docker for Windows,则需要特殊处理。您应该可以毫无问题地看到localhost(如果您的容器是 Linux)。如果您希望您的容器从外面可见,请尝试使用 Elevated Power Shell:
netsh interface portproxy add v4tov4 listenaddress=yourip listenport=9090 connectaddress=10.0.75.1 connectport=9090
Run Code Online (Sandbox Code Playgroud)
但是,如果您的容器是 Windows,您将看不到localhost,您需要使用容器内部地址:
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" <cointainerid>
Run Code Online (Sandbox Code Playgroud)
参考:https : //blog.docker.com/2016/09/build-your-first-docker-windows-server-container/
问候
小智 5
该端口确实正按预期暴露在“外部世界”中,由于当前的Windows网络限制,恰好无法从环回接口(本地主机或127.0.0.1)上的容器主机本身访问该端口。与其尝试通过容器主机上的环回接口访问它,不如尝试使用容器主机ip和容器暴露的端口号从网络上的另一台计算机上访问它。
在https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/上有一个很好的文章
归档时间: |
|
查看次数: |
8648 次 |
最近记录: |