首页 > 解决方案 > 为什么 ping 到 docker 容器会返回“请求超时”?

问题描述

我有一个在我的本地计算机(适用于 Windows 10 的 docker)中为我工作了很长时间的设置。最近我开始使用 kubernetes,现在我的 docker 容器出现了连接问题。我可以docker exec bash进入它们,但是 ping 到 cotainer ip 不起作用。

我不是 100% 确定路由是如何工作的。

这是我目前拥有的路由:

# route PRINT
===========================================================================
Interface List
  5...8c 89 a5 59 d0 9b ......Realtek PCIe GbE Family Controller
 14...00 ff 9a f5 da ac ......TAP-Windows Adapter V9
  1...........................Software Loopback Interface 1
 20...00 15 5d 1a 4c 88 ......Hyper-V Virtual Ethernet Adapter
 35...00 15 5d d6 58 e9 ......Hyper-V Virtual Ethernet Adapter #2
===========================================================================

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0       10.0.0.138        10.0.0.15     35
         10.0.0.0    255.255.255.0         On-link         10.0.0.15    291
        10.0.0.15  255.255.255.255         On-link         10.0.0.15    291
       10.0.0.255  255.255.255.255         On-link         10.0.0.15    291
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
       172.16.0.0      255.240.0.0     192.168.65.0        10.0.0.15     36
   192.168.172.32  255.255.255.240         On-link    192.168.172.33   5256
   192.168.172.33  255.255.255.255         On-link    192.168.172.33   5256
   192.168.172.47  255.255.255.255         On-link    192.168.172.33   5256
  192.168.175.240  255.255.255.240         On-link   192.168.175.241   5256
  192.168.175.241  255.255.255.255         On-link   192.168.175.241   5256
  192.168.175.255  255.255.255.255         On-link   192.168.175.241   5256
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link         10.0.0.15    291
        224.0.0.0        240.0.0.0         On-link    192.168.172.33   5256
        224.0.0.0        240.0.0.0         On-link   192.168.175.241   5256
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link         10.0.0.15    291
  255.255.255.255  255.255.255.255         On-link    192.168.172.33   5256
  255.255.255.255  255.255.255.255         On-link   192.168.175.241   5256
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
       172.16.0.0      255.240.0.0     192.168.65.0       1
===========================================================================

码头工人网络:

# docker network inspect myappjose_default                                                                             
[                                                                                                                        
    {                                                                                                                    
        "Name": "myappjose_default",                                                                                   
        "Id": "28ea26ea55b012d25397029e02bb2ddd442f725b310a5bbd1ff321e563d257c2",                                        
        "Created": "2020-10-16T07:21:52.6360039Z",                                                                       
        "Scope": "local",                                                                                                
        "Driver": "bridge",                                                                                              
        "EnableIPv6": false,                                                                                             
        "IPAM": {                                                                                                        
            "Driver": "default",                                                                                         
            "Options": null,                                                                                             
            "Config": [                                                                                                  
                {                                                                                                        
                    "Subnet": "172.18.0.0/24"                                                                            
                }                                                                                                        
            ]                                                                                                            
        },                                                                                                               
        "Internal": false,                                                                                               
        "Attachable": true,                                                                                              
        "Ingress": false,                                                                                                
        "ConfigFrom": {                                                                                                  
            "Network": ""                                                                                                
        },                                                                                                               
        "ConfigOnly": false,                                                                                             
        "Containers": {                                                                                                  
            "0c78b6eb1b88447e5690caeb90343dbe345e9e32cc407a60e18aa6cacec37f53": {                                        
                "Name": "myappj1-model-container",                                                                     
                "EndpointID": "a85c982c4cb982be6ee654aa3680c50229b3a89032ba9d7b1191e530c29564cf",                        
                "MacAddress": "02:42:ac:12:00:02",                                                                       
                "IPv4Address": "172.18.0.2/24",                                                                          
                "IPv6Address": ""                                                                                        
            },                                                                                                           
            "e1b518b64b4cdc2e18412c4d53eb3342d313a476c925e4e94529a81d3fa30993": {                                        
                "Name": "myappj1-view-container",                                                                      
                "EndpointID": "c4e373e05daf55f726823bccce0aec8faf5deaef6b0223e15e692352f46653f7",                        
                "MacAddress": "02:42:ac:12:00:04",                                                                       
                "IPv4Address": "172.18.0.4/24",                                                                          
                "IPv6Address": ""                                                                                        
            },                                                                                                           
            "eaa89d990ebcb8f3f26a1e5aff5db6f0ecddbf2e07c13bc52dbb57332818ad47": {                                        
                "Name": "myappj1-controller-container",                                                                
                "EndpointID": "a0a35480e775bbab0e4a23819021751d4368b6d255ef519c89bc5ffd898441fb",                        
                "MacAddress": "02:42:ac:12:00:03",                                                                       
                "IPv4Address": "172.18.0.3/24",                                                                          
                "IPv6Address": ""                                                                                        
            }                                                                                                            
        },                                                                                                               
        "Options": {},                                                                                                   
        "Labels": {                                                                                                      
            "com.docker.compose.network": "default",                                                                     
            "com.docker.compose.project": "myappjose",                                                                 
            "com.docker.compose.version": "1.27.4"                                                                       
        }                                                                                                                
    }                                                                                                                    
]   

设置中的 Docker 网络:

在此处输入图像描述

并且 ping 不起作用:

$ ping 172.18.0.4

Pinging 172.18.0.4 with 32 bytes of data:
Request timed out.  

我可以使用以下方法进入容器docker exec(因此它可以正常工作并且可以访问):

$ winpty docker exec -it myappj1-model-container bash
root@myappj1-model:/#   

更新

好像和我这周安装的WSL2有关。docker 正在使用 wsl 引擎,但 wsl 机器没有互联网连接。我仍然不知道如何让它工作

知道如何解决吗?如果您需要更多信息,请告诉我,我会更新

标签: dockerwsl-2

解决方案


为后来者造福;

您需要将容器端口映射到主机端口并尝试测试连接。如果它被映射,当您检查容器时,您会发现一个名为“ExposedPorts”的键,其中提到了端口,如上所示。到目前为止,您正在尝试 ping 一个无法访问的 IP 172.18.0.4,该 IP 只有 docker 网络知道。

您可以使用端口映射运行容器并尝试测试连接。或者您可以在 docker-compose.yml 文件中指定端口映射并执行

docker-compose up

并测试连接。

在windows中测试Powershell中的连接,可以使用Test-NetConnection工具。还有许多其他工具也同样 适用

PS C:\Users\DMF Media> Test-NetConnection 127.0.0.1 -p 3306

推荐阅读