无法在网络nat上创建端点:hnsCall在Win32中失败:该进程无法访问该文件

use*_*017 13 docker dockerfile

我正在尝试运行以下docker命令(最新Win10 2018年秋季更新,最新docker版本2.0):

docker run -d -p 1433:1433 -e sa_password=Test_123 -e ACCEPT_EULA=Y microsoft/mssql-server-windows-developer
Run Code Online (Sandbox Code Playgroud)

但是它失败并出现以下错误:

来自守护程序的错误响应:无法在网络nat上创建终结点unruffled_wozniak:hnsCall在Win32中失败:该进程无法访问该文件,因为该文件正在被另一个进程使用。(0x20)。

我尝试了以下方法:

  • 重新启动守护程序
  • docker system prune -a
  • 重新启动机器
  • 重新启动HNS服务
  • 重新安装码头工人
  • 从Windows禁用容器和Hyper-V功能

没事。有什么建议么?

And*_*ner 29

不知道这是多么明智,但我检查了端口没有与另一个应用程序一起使用,但仍然出现错误。

这已经为我解决了几次问题。在管理 PowerShell 控制台中,运行以下命令:

Stop-Service docker
Stop-service hns
Start-service hns
Start-Service docker
docker network prune
Run Code Online (Sandbox Code Playgroud)

部分来自这篇文章


Har*_*vey 8

在尝试使PostgreSQL与Docker一起运行时,我遇到了同样的问题。问题在于该端口已被捆绑!这是因为我的操作系统中已经有PostgreSQL作为普通数据库运行。

我的解决方法是postgresql-x64-10在“任务管理器”中(在“服务”下)找到该服务并停止该服务。

解决方案听起来似乎很明显,但我想我还是会提到它


Nic*_*kis 8

我遇到了同样的错误,但停止在我的本地机器上运行的 SQL Server 服务在端口 1433 上不是一个选项,所以我只是将一个不同的端口映射到容器。我用以下内容替换了端口映射参数:

-p 1434:1433
Run Code Online (Sandbox Code Playgroud)

这会将您的本地机器的端口 1434 映射到容器的端口 1433。如果您的本地机器的端口 1434 也在使用中,您必须找到一个可用的端口。

一旦你有了它,如果你想使用 SSMS,你只需要使用逗号告诉它通过端口 1434 连接:localhost,1434

SQL Server 连接对话框


小智 6

Windows上检查端口侦听器: PS:> Get-NetTCPConnection | 查找str 1433

就我而言: 在此输入图像描述

找到 ID = 12240 的进程并杀死它们(com.docker.backend)

我的新端口重定向工作正常后!!!


小智 5

如果您在带有 Linux 容器的 docker 中,并且有一个待处理的容器使用 Windows 容器中的端口,则在 Windows 中会发生这种情况。尝试将容器切换到不同的操作系统并停止容器进程。这对我有用。