在Windows 10中使用Docker for Windows公开容器端口到主机
我已经阅读docker API,并试图创build一个简单的容器,并显示1端口。
在我的示例中,我有一个应用程序在容器内侦听TCP端口9595
,我想从外部世界(即容器的主机)在端口9090
上访问它。
创build容器时,我有"ExposedPorts": { "9595/tcp: {}" }
和"PortBindings": { "9595/tcp": [{ "HostPort": "9090" }] }
。
所以,如果我从主机访问http://container_internal_ip:9595
它的工作原理! 但是,当我访问http://localhost:9090
,这是我期望使用此端口映射function,它不起作用…
当运行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,则需要特殊处理。 你应该看到没有问题的本地主机 (如果你的容器是Linux的话)。 如果你想从外面看到你的容器,那么试试这个boost的功率shell:
netsh interface portproxy add v4tov4 listenaddress=yourip listenport=9090 connectaddress=10.0.75.1 connectport=9090
如果你的容器是Windows,但是你不会看到本地主机 ,你需要使用容器的内部地址:
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" <cointainerid>
参考: https : //blog.docker.com/2016/09/build-your-first-docker-windows-server-container/
问候
端口确实正如预期的那样暴露在“外部世界”中,由于当前的Windowsnetworking限制,它正好在容器主机自身的环回接口(localhost或127.0.0.1)上无法访问。 不要试图通过容器主机上的回送接口访问它,而是尝试使用容器主机ip和容器暴露的端口号从networking上的另一台机器访问它。
这里有一个很好的写法https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/
- 如何将Docker镜像列表与标记列表关联起来,都是通过API返回的?
- 在Docker容器中Oracle11g数据库长时间启动
- 获取泊坞窗图像的父图像
- System.InvalidOperationException:“path基础只能使用IApplicationBuilder.UsePathBase()configuration。
- 在Docker中连接到mongoDB套接字
- 如何使用docker中的unix套接字将nginx连接到php-fpm
- 在Docker容器中启动系统服务
- 在使用非系统驱动器数据的情况下拖动Microsoft / Nanoserver容器时发生错误“Win32中的OpenForBackup失败”
- Docker DNS设置