无法访问Docker容器暴露的端口。可以ping但不能telnet

时间:2018-12-05 04:53:31

标签: docker networking

我正在尝试通过以下链接在Docker中创建一个Apache容器:

  

https://www.assistanz.com/installing-apache-web-server-in-windows-container-using-docker-file/

版本详细信息:

主机操作系统:Windows Server 2016(VMWare虚拟机)

Docker版本:

PS C:\Windows\system32> docker version
Client:
 Version:      17.06.2-ee-16
 API version:  1.30
 Go version:   go1.8.7
 Git commit:   9ef4f0a
 Built:        Thu Jul 26 16:43:19 2018
 OS/Arch:      windows/amd64

Server:
 Engine:
  Version:      17.06.2-ee-16
  API version:  1.30 (minimum version 1.24)
  Go version:   go1.8.7
  Git commit:   9ef4f0a
  Built:        Thu Jul 26 16:52:17 2018
  OS/Arch:      windows/amd64
  Experimental: false

我设法创建了容器并使用以下命令运行它:

docker run -it -p 8080:80 apache powershell

PS C:\> ipconfig

Windows IP Configuration


Ethernet adapter vEthernet (Container NIC 258c52dd):

Connection-specific DNS Suffix  . :
Link-local IPv6 Address . . . . . : fe80::706a:94f1:9a6:6c49%31
IPv4 Address. . . . . . . . . . . : 172.21.60.107
Subnet Mask . . . . . . . . . . . : 255.255.240.0
Default Gateway . . . . . . . . . : 172.21.48.1

从容器内部确认Apache是​​否正在端口80上运行:

PS C:\> iwr http://localhost -usebasicparsing

StatusCode        : 200
StatusDescription : OK

从主机上:

  • 访问http://container-ip:80并失败

    PS C:\Windows\system32> iwr http://172.21.60.107:80 -usebasicparsing
    iwr : Unable to connect to the remote server
    
  • 访问http://host-ip:8080并失败

    PS C:\Windows\system32> iwr http://192.168.105.87:8080 -usebasicparsing
    iwr : Unable to connect to the remote server
    

尝试使用http://host-ip:8080从其他PC访问,但也失败。

我为故障排除所做的几件事:

  1. 通过运行docker ps检查容器端口转发

     PS C:\Windows\system32> docker ps
     CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
     8bdaf5b11ab9        apache              "powershell"        14 minutes ago      Up 14 minutes       0.0.0.0:8080->80/tcp   inspiring_turing
    
  2. 通过运行Get-NetNatStaticMapping检查静态映射

    PS C:\Windows\system32> Get-NetNatStaticMapping
    
    
    StaticMappingID               : 3
    NatName                       : Hf41327a7-ce0a-464c-83ff-21223867c9ea
    Protocol                      : TCP
    RemoteExternalIPAddressPrefix : 0.0.0.0/0
    ExternalIPAddress             : 0.0.0.0
    ExternalPort                  : 8080
    InternalIPAddress             : 172.21.60.107
    InternalPort                  : 80
    InternalRoutingDomainId       : {00000000-0000-0000-0000-000000000000}
    Active                        : True
    
  3. 再次确保已禁用防火墙和防病毒软件

  4. 确保没有代理

    PS C:\Windows\system32> Get-ItemProperty -Path "Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    
    
    DisableCachingOfSSLPages : 1
    IE5_UA_Backup_Flag       : 5.0
    PrivacyAdvanced          : 1
    SecureProtocols          : 2688
    User Agent               : Mozilla/4.0 (compatible; MSIE 8.0; Win32)
    CertificateRevocation    : 1
    ZonesSecurityUpgrade     : {75, 36, 102, 206...}
    WarnonZoneCrossing       : 0
    EnableNegotiate          : 1
    MigrateProxy             : 1
    ProxyEnable              : 0
    PSPath                   : Microsoft.PowerShell.Core\Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    PSParentPath             : Microsoft.PowerShell.Core\Registry::HKCU\Software\Microsoft\Windows\CurrentVersion
    PSChildName              : Internet Settings
    PSProvider               : Microsoft.PowerShell.Core\Registry
    
  5. 检查容器网络

    PS C:\Windows\system32> Get-ContainerNetwork
    
    Name Id                                   Subnets          Mode SourceMac DNSServers DNSSuffix
    ---- --                                   -------          ---- --------- ---------- ---------
    
    nat  f41327a7-ce0a-464c-83ff-21223867c9ea {172.21.48.0/20} NAT
    
  6. 从主机ping容器IP =>好

  7. 从主机远程登录到容器IP和端口=>失败

    PS C:\Windows\system32> telnet 172.21.60.107 80
    Connecting To 172.21.60.107...Could not open connection to the host, on port 80: Connect failed
    
  8. 从容器ping主机IP =>失败

用Google搜索了这个问题,并尝试了很多故障排除方法,但是似乎我找不到解决我问题的方法。报告的大多数问题是由于window中的localhost环回问题引起的。

是否有进一步解决此问题的指针?

我怀疑是否有东西挡住了集装箱港口。但是我找不到它。

谢谢

0 个答案:

没有答案