Невозможно получить доступ к открытому порту док-контейнера.Может пинговать, но не может телнет - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь создать контейнер Apache в Docker, используя следующую ссылку:

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 , а также не смог.

Несколько вещей, которые я сделал для устранения неполадок:

  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. IP-адрес контейнера Ping от хоста => Хорошо

  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. PingIP-адрес хоста из контейнера => Не удалось

Гуглил эту проблему и пробовал много проблем, но, похоже, я не смог найти решение своей проблемы.Большая часть обнаруженной проблемы связана с проблемой обратной петли localhost в окне.

Есть ли какие-либо указатели о том, как устранить эту проблему дальше?

Я подозреваю, что что-то блокирует порт контейнера.Но я не могу его найти.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...