WSL2-ubuntu启动docker报错

发布于 2023-05-05  757 次阅读


在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)

解决办法记录一下:

  1. 首先,将iptables用iptables-legacy替换:
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
  1. 开启 ipv4 的包转发功能:
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf`
  1. 退出重新启动即可(在管理员模式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)


星星温柔泛滥,人间至善