Контейнер Windows не удалось запустить из-за ошибки, не удалось создать конечную точку в сети nat: сбой HNS с ошибкой: не удалось создать конечную точку.

Я пробовал контейнеры Windows на сервере Windows 2016 TP5. Внезапно я начал получать ошибку при запуске контейнера с параметром сопоставления портов -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.

Я убедился, что ни один другой контейнер не запущен, а порт 80 на хост-компьютере не используется какой-либо другой службой.

Кто-нибудь сталкивался с такой же проблемой?


person pinkal vansia    schedule 28.06.2016    source источник


Ответы (4)


После поиска я наткнулся на эту проблему на github. Похоже, это известная проблема с контейнерами Windows на сервере Windows TP5.

Тогда благодаря этот форум, я нашел решение Вы можете проверить активное статическое сопоставление портов с помощью следующей команды

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

Из приведенного выше вывода видно, что хотя контейнер был удален, статическое сопоставление портов не было удалено и все еще было активным.

Но я удалил его с помощью команды ниже.

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

Потом просто перезагрузил систему и ошибка исчезла.

person pinkal vansia    schedule 28.06.2016

Для меня эти шаги решили проблему:

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

(предложено JMesser81 по адресу: https://github.com/Microsoft/Virtualization-Documentation/issues/273)

person HamedH    schedule 22.12.2016

У меня была аналогичная ошибка.

$ 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.

Удаление статического отображения не помогло, помогло только удаление сети:

Get-ContainerNetwork -Name nat | Remove-ContainerNetwork

Выполните команду в PowerShell от имени администратора, затем перезапустите Docker.


Обновление:

Используйте сценарий CleanupContainerHostNetworking.ps1 для разрешения Проблемы с сетью Docker 17.

.\CleanupContainerHostNetworking.ps1 -Cleanup -ForceDeleteAllSwitches
person Der_Meister    schedule 14.12.2016

У меня были docker и docker-compose, которые уже работали на Centos. Я сделал следующие изменения, чтобы заставить его работать на Windows Server 2016:

  1. Остановите службу докеров, удалите nat, запустите службу докеров.

    ps>stop-service docker
    ps>Get-ContainerNetwork | Remove-ContainerNetwork -Force -ea SilentlyContinue
    ps>start-service docker   
    
  2. Настройте сеть в вашем docker-compose.yml

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

Это оно!

person Pratap Singh Mehra    schedule 06.02.2019