Я пытаюсь создать контейнер 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 , а также не смог.
Несколько вещей, которые я сделал для устранения неполадок:
Проверьте переадресацию портов контейнера, запустив 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
Проверьте статическое сопоставление, запустив 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
Убедитесь, чтоБрандмауэр и муравейивирусы отключены
Убедитесь, что нет прокси
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
Проверьте контейнерную сеть
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
IP-адрес контейнера Ping от хоста => Хорошо
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
PingIP-адрес хоста из контейнера => Не удалось
Гуглил эту проблему и пробовал много проблем, но, похоже, я не смог найти решение своей проблемы.Большая часть обнаруженной проблемы связана с проблемой обратной петли localhost в окне.
Есть ли какие-либо указатели о том, как устранить эту проблему дальше?
Я подозреваю, что что-то блокирует порт контейнера.Но я не могу его найти.
Спасибо