HNS失败,错误为:参数不正确。

18

我正在使用Visual Studio 2017制作Docker容器化应用程序。 在首次通过Visual Studio运行Docker时,我得到了一个错误:“ERROR: client version 1.22过旧”。

通过将Docker Compose更新到2.1版本,解决了此错误。

以下链接包含有关此特定错误的进一步说明:

ERROR: client version 1.22 is too old

在解决此错误后,现在构建Docker时我遇到了“HNS failed with error: The parameter is incorrect.” 的问题。

从多个github讨论中,我发现这是Windows网络错误。

这个问题有解决方案吗? 我应该降级Docker版本还是安装其他软件?

我正在使用Windows容器。 运行docker version命令结果如下: 客户端: 版本:17.06.0-ce API版本:1.30 Go版本:go1.8.3 Git提交:02c1d87 构建时间:Fri Jun 23 21:30:30 2017 OS/Arch:windows/amd64

服务器: 版本:17.06.0-ce API版本:1.30(最低版本1.24) Go版本:go1.8.3 Git提交:02c1d87 构建时间:Fri Jun 23 22:19:00 2017 OS/Arch:windows/amd64 实验性功能:true

编辑:

如果我切换到Linux容器,这个问题就解决了。 但是另一个问题出现了,驱动器没有共享。 即使共享了D:驱动器,驱动器共享问题仍然存在。

如何解决Linux容器驱动器共享问题?

我想在本地使用Windows容器,以便将此应用程序部署到Azure上。


尝试清理您的Docker网络堆栈(https://github.com/Microsoft/Virtualization-Documentation/tree/master/windows-server-container-tools/CleanupContainerHostNetworking) - Gregory Suvalian
3个回答

35

这是一个已知的限制。目前,Windows仅支持一个NAT网络。不支持通过调用Remove-Netnat来删除Netnat。

在PowerShell中运行以下命令:

Get-NetNat | Remove-NetNat


你好,我正在使用这些命令并运行docker-compose up -d nginx,但是返回错误:ERROR: Network "laradock_default" 需要重新创建 - 选项 "com.docker.network.windowsshim.hnsid" 已更改。 - Junior Mcq
在 laradock 的 Github 存储库中搜索类似的问题。你可能会找到答案。 - Khalil
1
如果有人需要跟进这个问题,可以访问以下链接:https://github.com/docker/for-win/issues/598 - Sibeesh Venu

6
为了防止 docker-compose 创建新的 "default" 网络,你可以在docker-compose.yml文件中指定已存在的网络来使用:
networks:
    default:
        external:
            name: nat

要检查现有网络,请执行以下操作:

docker network ls

0

以管理员身份打开PowerShell(X64) 执行以下命令

Get-NetNat 

如果它返回类似这样的东西

enter image description here

然后在 PowerShell 中运行以下命令

Remove-NetNat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接