Windows容器端口绑定在Windows Server 2016上不起作用(使用Docker)

问题描述 投票:1回答:3

[我正在Windows主机(Windows Server 2016)上使用Docker运行Windows容器。我想将其绑定到主机端口8000。然后像这样运行容器:

docker run -d -p 8000:8000 474614/my_repo:javaprogram

Docker版本:

PS C:\Users\Administrator> docker version
Client:
 Version:      17.03.1-ee-3
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   3fcee33
 Built:        Thu Mar 30 19:31:22 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.03.1-ee-3
 API version:  1.27 (minimum version 1.24)
 Go version:   go1.7.5
 Git commit:   3fcee33
 Built:        Thu Mar 30 19:31:22 2017
 OS/Arch:      windows/amd64
 Experimental: false

根据我的理解,由于我是从具有Windows容器的Windows服务器上“本地”运行docker的,因此它们之间没有中间VM(没有docker计算机),所以“主机”是我在其上运行docker的实际Windows Server 。

所以我的问题是,为什么主机端口绑定不起作用?为什么我找不到主机?

我试图通过使用以下命令通过命令行添加代理

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress="MY_HOST_IP" connectport=8000

我也感到困惑的是,当我同时在主机和容器上运行netstat时,得到了以下结果

主机上的netstat

PS C:\Users\Administrator> netstat -ab | findstr ":80"
  TCP    0.0.0.0:80             MYCOMPUTER:0      LISTENING
  TCP    127.0.0.1:8000         MYCOMPUTER:0     LISTENING
  TCP    [::]:80                MYCOMPUTER:0      LISTENING
PS C:\Users\Administrator>

容器上的netstat

PS C:\Users\Administrator> netstat -ab | findstr ":80"
  TCP    0.0.0.0:80             MYCOMPUTER:0      LISTENING
  TCP    127.0.0.1:8000         MYCOMPUTER:0     LISTENING
  TCP    [::]:80                MYCOMPUTER:0      LISTENING
PS C:\Users\Administrator>

但是当我尝试从主机访问localhost:8000或127.0.0.1:8000时,显示以下错误

This site can’t be reached

PS C:\Users\Administrator> docker run 474614/my_repo:javaprogram
Hello Java

当我运行图像时,我将得到以上结果。我试图通过浏览器查看结果,我该怎么做?构建docker映像时是否可以在dockerfile上分配IP?如果可以的话,请为我提供示例dockerfile的帮助,或者对此提供任何建议将非常有帮助。

我正在Windows主机(Windows Server 2016)上使用Docker运行Windows容器。我想将其绑定到主机端口8000。然后像这样运行容器:docker run -d -p 8000:8000 474614 /。 ..

docker-container docker-for-windows
3个回答
1
投票

我是Microsoft Windows Core Networking Team的PM主管。这个回答是正确的(尽管我不能投票赞成)。我们将在Windows的下一个半年通道(SAC)版本中(针对CY2018的第二季度)添加对本地主机通信的支持。您可以注册以获取Insider版本(在正式GA之前),此功能应在接下来的几周内包含在这些版本中。



0
投票

只需确保您的package.json在“ ng serve”条目中包含此参数...

© www.soinside.com 2019 - 2024. All rights reserved.