在WSL2安装完docker之后,启动docker的时候会报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?,查了很久也没找到原因,然后去日志里看了一下,报错信息是这个failed to start daemon: Error initializing network controller: error obtaining controller instance: unable to add return rule in DOCKER-ISOLATION-STAGE-1 chain: (iptables failed: iptables --wait -A DOCKER-ISOLATION-STAGE-1 -j RETURN: iptables v1.8.7 (nf_tables): RULE_APPEND failed (No such file or directory): rule in chain DOCKER-ISOLATION-STAGE-1
然后查了一下日志的错误信息,是 iptables 的问题,搜了一下,找到了解决办法,这个问题在docker的官方仓库中有人提出过docker-failed to start daemon: Error initializing network controller: error obtaining controller instance · Issue #1105 · docker/for-linux (github.com)
解决办法记录一下:
- 首先,将iptables用iptables-legacy替换:
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
- 开启 ipv4 的包转发功能:
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf`
- 退出重新启动即可(在管理员模式cmd执行关闭命令,再打开即可)
wsl --shutdown
WSL2 中不能使用systemctl
,需要使用service
来启动 docker 或其他服务,同时附上命令(如果执行报错,不是没安装的原因,而是wsl就不支持)
查看docker状态
sudo service docker status
启动docker
sudo service docker start
出现报错建议先查看日志再进行解决
日志位置:var/log/docker.log
原文:WSL2-Debian 安装 docker 后无法启动的解决办法 - thepoy - 博客园 (cnblogs.com)
Comments NOTHING