Windows container failed to start with error, "failed to create endpoint on network nat: HNS failed with error : Failed to create endpoint."
Windows container failed to start with error, "failed to create endpoint on network nat: HNS failed with error : Failed to create endpoint."
我一直在 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 未被任何其他服务使用。
有人遇到同样的问题吗?
四处搜索后,我偶然发现了 github 上的 this 问题。这似乎是 Windows 服务器 TP5 上 Windows 容器的已知问题。
然后感谢this论坛,我找到了解决方案
您可以使用以下命令检查活动静态端口映射
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
然后只需重新启动系统,错误就消失了。
我有类似的错误。
$ 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
对我来说,这些步骤解决了问题:
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)
我有一个 docker 和 docker-compose,它们已经在 Centos 上运行了。
我做了以下更改以使其在 windows 服务器 2016 上运行:
停止docker服务,删除nat,启动docker服务。
ps>stop-service docker
ps>Get-ContainerNetwork | Remove-ContainerNetwork -Force -ea SilentlyContinue
ps>start-service docker
在 docker-compose.yml
中配置网络
version: '3.7'
networks:
default:
external:
name: nat
就是这样!
我一直在 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 未被任何其他服务使用。
有人遇到同样的问题吗?
四处搜索后,我偶然发现了 github 上的 this 问题。这似乎是 Windows 服务器 TP5 上 Windows 容器的已知问题。
然后感谢this论坛,我找到了解决方案 您可以使用以下命令检查活动静态端口映射
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
然后只需重新启动系统,错误就消失了。
我有类似的错误。
$ 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
对我来说,这些步骤解决了问题:
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)
我有一个 docker 和 docker-compose,它们已经在 Centos 上运行了。 我做了以下更改以使其在 windows 服务器 2016 上运行:
停止docker服务,删除nat,启动docker服务。
ps>stop-service docker ps>Get-ContainerNetwork | Remove-ContainerNetwork -Force -ea SilentlyContinue ps>start-service docker
在 docker-compose.yml
中配置网络version: '3.7' networks: default: external: name: nat
就是这样!