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
情况如下:
- 运行docker容器的时候提示“network nat is ambigous”错误;
- docker network ls 命名查看网络,出现2个nat;
- 使用 docker network rm 命令删除nat网络,提示 “nat is a pre-defined network and cannot be removed”;
即nat网络重名、无法使用、无法删除。
DockerTools 的issue中可以找到 network nat is ambigous #89
解决方案:
- 使用 Microsoft DockerTools 推荐的方法清除network,但脚本提示各种错误,尝试解决无果。解决方法请参照:https://github.com/MicrosoftDocs/Virtualization-Documentation/tree/master/windows-server-container-tools/CleanupContainerHostNetworking ;
- 自定义脚本删除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 命令,然后重启电脑即可;
这个方法对于我的电脑是奏效的。
- 其实从方法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.
vmware 在设置桥接网络时出现The network bridge on device VMnet0 is not running.