Windows container failed to start with error, “failed to create endpoint on network nat: HNS failed with error : Failed to create endpoint.”

亡梦爱人 提交于 2019-12-19 17:34:38

问题


I have been trying Windows Containers on windows server 2016 TP5. Suddenly I started getting error while running a container with port maping option -p 80:80

c:\>docker run -it -p 80:80 microsoft/iis cmd
docker: Error response from daemon: failed to create endpoint sharp_brahmagupta on network nat: HNS failed with error : Failed to create endpoint.

I made sure that no other container is running and port 80 on host machine is not being used by any other service.

Did anyone face same issue?


回答1:


After searching around I stunbled upon this issue on github. This seemed to be a known issue with Windows containers on Windows server TP5.

Then thanks to this forum, I found the solution You can check active static port mapping with below command

C:\>powershell
PS C:\>Get-NetNatStaticMapping


StaticMappingID               : 3
NatName                       : Hda6caca4-06ec-4251-8a98-1fe0b4c5af88
Protocol                      : TCP
RemoteExternalIPAddressPrefix : 0.0.0.0/0
ExternalIPAddress             : 0.0.0.0
ExternalPort                  : 80
InternalIPAddress             : 172.31.181.4
InternalPort                  : 80
InternalRoutingDomainId       : {00000000-0000-0000-0000-000000000000}
Active                        : True

From above output it seemed that even though container was removed the static port mapping was not removed and was still active.

But I removed it with below command.

PS C:\> Get-NetNatStaticMapping | ? ExternalPort -eq 80 | Remove-NetNatStaticMapping

Then simply rebooted the system and the error was gone.




回答2:


For me these steps solved the problem:

Stop-Service docker
Get-ContainerNetwork | Remove-ContainerNetwork
Get-NetNat | Remove-NetNat
Get-VMSwitch | Remove-VMSwitch
Start-Service docker

(suggested by JMesser81 at:https://github.com/Microsoft/Virtualization-Documentation/issues/273)




回答3:


I had similar error.

$ docker --version
Docker version 1.13.0-rc3, build 4d92237
$ docker-compose -f .\docker-compose.windows.yml up
Starting musicstore_db_1

ERROR: for db  Cannot start service db: {"message":"failed to create endpoint musicstore_db_1 on network nat: HNS failed with error : Unspecified error"}
ERROR: Encountered errors while bringing up the project.

Static mapping removal did not work, only network removal helped:

Get-ContainerNetwork -Name nat | Remove-ContainerNetwork

Execute the command in PowerShell as administrator, then restart Docker.


Update:

Use CleanupContainerHostNetworking.ps1 script to resolve Docker 17 networking issues.

.\CleanupContainerHostNetworking.ps1 -Cleanup -ForceDeleteAllSwitches



回答4:


I had a docker and docker-compose which were already working on Centos. I did the following changes to make it work on windows server 2016:

  1. Stop the docker service, remove nat, start the docker service.

    ps>stop-service docker
    ps>Get-ContainerNetwork | Remove-ContainerNetwork -Force -ea SilentlyContinue
    ps>start-service docker   
    
  2. Configure network in your docker-compose.yml

    version: '3.7'
    networks:
      default:
        external:
          name: nat    
    

That's It!



来源:https://stackoverflow.com/questions/38070837/windows-container-failed-to-start-with-error-failed-to-create-endpoint-on-netw

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!