docker - Windows Docker 容器没有 NAT IP 地址。无法在本地访问容器

标签 docker dockerfile windows-networking

首先要明确的是,我的 docker 容器在 NetworkSettings.Networks.bridge 下有一个 IP 地址。该 IP 是 172.17.0.2

但是,在使用 docker run -p 3000:3000 node:8.10.0 运行容器后,我无法通过 http://172.17.0.2:3000/ 访问容器

我的研究表明它在 Windows 本地与 docker 一起工作很粗糙。按照这个简短的指南:https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/

我遇到过使用网络 NAT IP 地址的情况。我看到这个推荐了几个地方。但是我的 docker inspect 的那部分根本不存在。 它返回:

 "NetworkSettings": {                                                                            
 "Bridge": "",                                                                               
 "SandboxID": "0c81d8f7ce5bcba70ec0487bbfe91bc6f221e29d9378c33708fac78d0ae47d3e",            
 "HairpinMode": false,                                                                       
 "LinkLocalIPv6Address": "",                                                                 
 "LinkLocalIPv6PrefixLen": 0,                                                                
 "Ports": {                                                                                  
     "3000/tcp": [                                                                           
         {                                                                                   
             "HostIp": "0.0.0.0",                                                            
             "HostPort": "3000"                                                              
         }                                                                                   
     ]                                                                                       
 },                                                                                          
 "SandboxKey": "/var/run/docker/netns/0c81d8f7ce5b",                                         
 "SecondaryIPAddresses": null,                                                               
 "SecondaryIPv6Addresses": null,                                                             
 "EndpointID": "bbe5f42a5b53c001bd3c2852bc6b22976fb9bab2afcb88b30f6660d7662f526f",           
 "Gateway": "172.17.0.1",                                                                    
 "GlobalIPv6Address": "",                                                                    
 "GlobalIPv6PrefixLen": 0,                                                                   
 "IPAddress": "172.17.0.2",                                                                  
 "IPPrefixLen": 16,                                                                          
 "IPv6Gateway": "",                                                                          
 "MacAddress": "02:42:ac:11:00:02",                                                          
 "Networks": {                                                                               
     "bridge": {                                                                             
         "IPAMConfig": null,                                                                 
         "Links": null,                                                                      
         "Aliases": null,                                                                    
         "NetworkID": "0af66a62bc57ce25491c82f5a13d947ca79f5a879f3c1a6db40a90233eeb04f8",    
         "EndpointID": "bbe5f42a5b53c001bd3c2852bc6b22976fb9bab2afcb88b30f6660d7662f526f",   
         "Gateway": "172.17.0.1",                                                            
         "IPAddress": "172.17.0.2",                                                          
         "IPPrefixLen": 16,                                                                  
         "IPv6Gateway": "",                                                                  
         "GlobalIPv6Address": "",                                                            
         "GlobalIPv6PrefixLen": 0,                                                           
         "MacAddress": "02:42:ac:11:00:02",                                                  
         "DriverOpts": null                                                                  
     }                                                                                       
 }                   

如您所见,NAT 部分完全缺失。我在网上找不到任何提到原因或如何解决的内容。我希望它丢失会是一件好事,并使其更容易连接。唉,事实并非如此。任何帮助表示赞赏。这是 dockerfile:

FROM node:8.10.0
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
CMD ["./node_modules/gulp/bin/gulp.js", "assets"]
CMD [ "node", "app.js" ]
EXPOSE 3000

最佳答案

这是 docker windows 下的一个已知错误。它已在 19.03 中修复。因此,请尝试更新您的 docker 引擎。

关于docker - Windows Docker 容器没有 NAT IP 地址。无法在本地访问容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57558526/

相关文章:

python - 在另一个容器内使用Docker容器的数据

java - 将生成的 jar 文件的名称从 Maven pom.xml 传递到 Dockerfile

docker - 在不同的用户下启动docker容器

docker - Docker build_image无法到达我的本地Maven存储库

c++ - 获取事件 udp 连接的目标 IP/端口?

sql-server - MS SQL Server Docker数据位置

amazon-web-services - AWS Elastic Beanstalk Docker部署失败

linux - Windows 中的 AF_UNIX

c# - Process.start 在网络驱动器上,要求身份验证

java - 如何导出和导入彼此依赖的app-docker和mysql-docker?