错误:无法在 http+docker://localhost 连接到 Docker 守护进程 - 它正在运行吗?适用于 Linux 的 Windows 子系统

Tob*_*byR 7 docker windows-subsystem-for-linux

我已经使用 Docker 大约两个月了,在 Windows/WSL 上工作。前几天我需要重新启动我的机器,一旦它重新启动,我尝试再次设置我的 docker 容器,但遇到了我以前遇到的问题。我上次使用的所有解决方案都不起作用,谷歌上也没有。

我已经尝试了很多事情,互联网上的每一种可能性我都可以解决,而且我已经坚持了至少 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. 使用须藤
  4. 重新启动泊坞窗
  5. 重新安装 docker 桌面(Windows)

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

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

我们使用 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
Run Code Online (Sandbox Code Playgroud)

然后我被推荐尝试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)
Run Code Online (Sandbox Code Playgroud)

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

art*_*.sw 14

这个 github 问题

尝试运行dockerdsudo dockerd如果需要首先启动守护程序。如果你开始dockerdsudo你可能要运行docker-compose upsudo。否则没关系。


Tob*_*byR 12

事实证明,问题与组有关。我发现有效的解决方案是使用以下方法删除用户组“docker”:

sudo groupadd docker
sudo usermod -aG docker $(whoami)
Run Code Online (Sandbox Code Playgroud)

然后我运行了我的 make 文件的命令并且它起作用了!

我希望这对你们中的一些人有益!

  • 请务必注销您的用户以允许启用命令,然后重新登录,它将起作用 (3认同)