Docker: network nat is ambigous

Posted lyzcren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker: network nat is ambigous相关的知识,希望对你有一定的参考价值。

初次使用docker投入开发使用,感觉不要太爽。强烈推荐入坑docker。但docker国内相关资料偏少,无论是学习或是排查问题,都不是很方便。

入门学习推荐微信公众号magiccodes的《Docker最全教程》系列文章,有兴趣可自行查找。其他入门书籍暂时还没有看到比较好的。

此次记录一次docker使用过程中的问题

network nat is ambigous

情况如下:

  1. 运行docker容器的时候提示“network nat is ambigous”错误;
  2. docker network ls 命名查看网络,出现2个nat;
  3. 使用 docker network rm 命令删除nat网络,提示 “nat is a pre-defined network and cannot be removed”;

即nat网络重名、无法使用、无法删除。
DockerTools 的issue中可以找到 network nat is ambigous #89

解决方案:

  1. 使用 Microsoft DockerTools 推荐的方法清除network,但脚本提示各种错误,尝试解决无果。解决方法请参照:https://github.com/MicrosoftDocs/Virtualization-Documentation/tree/master/windows-server-container-tools/CleanupContainerHostNetworking
  2. 自定义脚本删除nat网络,脚本如下:
$KeyPath = "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\vmsmp\\parameters\\SwitchList"
$keys = get-childitem $KeyPath

foreach($key in $keys)



                if($key.GetValue("FriendlyName") -eq 'nat')

                

                                $newKeyPath = $KeyPath+"\\"+$key.PSChildName

                                Remove-Item -Path $newKeyPath -Recurse

                



remove-netnat -Confirm:$false

只需在本地创建 .ps1 后缀的脚本文件,复制上面的内容。然后在powershell中执行脚本就可以了。
比如创建脚本名称为“cleanUp.ps1”,复制上述内容,打开powershell,cd到脚本所在路径,执行 cleanUp.ps1 命令,然后重启电脑即可;
这个方法对于我的电脑是奏效的。

  1. 其实从方法2的脚本内容可以看出来,就是到注册表删除相关信息就OK了。进入注册表到 \\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\vmsmp\\parameters\\SwitchList
    查找 FriendlyName 为 nat 的子项,将其删除就OK了。同样,需重启电脑后生效。

以上方法解决了network nat is ambigous的问题,在此稍作记录。

以上是关于Docker: network nat is ambigous的主要内容,如果未能解决你的问题,请参考以下文章

Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work.

Docker 之WARNING: IPv4 forwarding is disabled. Networking will not work. 解决办法

docker 错误 WARNING: IPv4 forwarding is disabled. Networking will not work.

docker-网络

ubuntu命令~

vmware 在设置桥接网络时出现The network bridge on device VMnet0 is not running.