ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running? Windows subsystem for Linux

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running? Windows subsystem for Linux

我已经与 Docker 合作了大约两个月,致力于 Windows/WSL。前几天我需要重新启动我的机器,一旦它重新启动,我尝试再次设置我的 docker 容器并将 运行 设置为我以前遇到过的问题,但是。我上次使用的所有解决方案均无效,none on google 也有效。

我已经尝试了很多东西,互联网上的每一种可能性我都可以,我已经坚持了至少 8 个小时,不希望再浪费时间在上面。我会列出一些我已经尝试过但不起作用的:

  1. sudo usermod -aG docker $USER
  2. sudo ln -s /mnt/c/Program\ Files/Docker/Docker/resources/bin/docker.exe /usr/bin/docker
  3. 使用 sudo
  4. 重新启动docker
  5. 重新安装 docker 桌面 (windows)

我们的 make 文件中的命令 运行 是这样的:

docker-compose up -d

我们使用 MakeFile 在 docker 命令方面让我们的生活变得更轻松,所以通常我会 运行 这个命令,它应该只会启动容器并正常工作。但是我得到了这个:

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
Makefile:13: recipe for target 'up' failed
make: *** [up] Error 1

然后我被推荐尝试 sudo dockerd,然后我得到了这个错误,这一半解释了问题,但我找不到关于如何解决我的问题的明确答案:

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.6.1: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
 (exit status 3)

我真的希望有人能够帮助我解决这个问题,因为我被困住了并且需要让它工作。

原来问题出在群组上。我发现有效的解决方案是使用以下方法删除用户组 "docker":

sudo groupadd docker
sudo usermod -aG docker $(whoami)

然后我 运行 我的 make 文件的命令成功了!

我希望这对你们中的一些人有所帮助!

来自this github issue

Try running dockerd or sudo dockerd if required first to start daemon. If you start dockerd with sudo you may want to run docker-compose up with sudo also. otherwise it's fine.