WSL 安装Docker Engine启动报错 can’t initialize iptables table `nat’: Table does not exist
Windows Subsystem for Linux (WSL) 2是由微软构建的完整Linux内核,它可以让Linux发行版在不管理虚拟机的情况下运行。通过在WSL 2上运行Docker Desktop,用户可以利用Linux工作空间,避免同时维护Linux和Windows的构建脚本
在WSL上安装Docker时,建议将WSL直接升级为WSL2,可以通过下面2中方式升级:
一下操作,一定使用管理员模式打开 PowerShell
- 本机已安装WSL,首先要确定时WSL1还是WSL2
wsl -l -v
以下结果表明为安装的WSL1,可以通过以下方式进行转换:
NAME STATE VERSION * Ubuntu Stopped 1
重新设置版本号:
wsl --set-version Ubuntu 2
如果提示:需要升级内核,可以通过下面的方式进行升级
wsl --update --web-download
正常执行结果为:
正在下载: 适用于 Linux 的 Windows 子系统
正在安装: 适用于 Linux 的 Windows 子系统
已安装 适用于 Linux 的 Windows 子系统。
然后重新执行设置版本号操作;
可以直接通过下面的命令设置默认wsl为wsl2
wsl --set-default-version 2
wsl1安装docker Engine后,启动时会报错:
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.8.7 (legacy): can’t initialize iptables table `nat’: Table does not exist (do you need to insmod?)
升级wsl1为wsl2后,没有再出现此问题。