[我正在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 /。 ..
我是Microsoft Windows Core Networking Team的PM主管。这个回答是正确的(尽管我不能投票赞成)。我们将在Windows的下一个半年通道(SAC)版本中(针对CY2018的第二季度)添加对本地主机通信的支持。您可以注册以获取Insider版本(在正式GA之前),此功能应在接下来的几周内包含在这些版本中。
只需确保您的package.json在“ ng serve”条目中包含此参数...