异常: 获取服务器 API 版本时出错

我想安装这个模块,但有一些错误,当我尝试步骤 docker-compose build ...

我多次尝试更新 Docker 版本并重新启动 Docker,但都没有成功。

git clone https://github.com/uhh-lt/158.git
cd 158
docker-compose build
File "/home/ming/.local/bin/docker-compose", line 8, in <module>
sys.exit(main())
File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/main.py", line 67, in main
command()
File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/main.py", line 123, in perform_command
project = project_from_options('.', options)
File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/command.py", line 60, in project_from_options
return get_project(
File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/command.py", line 131, in get_project
client = get_client(
File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/docker_client.py", line 41, in get_client
client = docker_client(
File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/docker_client.py", line 170, in docker_client
client = APIClient(**kwargs)
File "/home/ming/.local/lib/python3.8/site-packages/docker/api/client.py", line 188, in __init__
self._version = self._retrieve_server_version()
File "/home/ming/.local/lib/python3.8/site-packages/docker/api/client.py", line 212, in _retrieve_server_version
raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

更新2020-11-23

谢谢你们两个帮助我处理这个错误! 我试过这个推荐,但是无法连接到我的 Docker:

ming@KITM-7664:~$ sudo /etc/init.d/docker start
[sudo] password for ming:
* Starting Docker: docker                                                                                       [ OK ]


ming@KITM-7664:~$ which docker
/usr/bin/docker


ming@KITM-7664:~$ docker version
Client: Docker Engine - Community
Version:           19.03.13
API version:       1.40
Go version:        go1.13.15
Git commit:        4484c46d9d
Built:             Wed Sep 16 17:02:52 2020
OS/Arch:           linux/amd64
Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


ming@KITM-7664:~$ systemctl status docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down


ming@KITM-7664:~$ systemctl start docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down


ming@KITM-7664:~$ sudo /etc/init.d/docker start
* Starting Docker: docker                                                                                       [ OK ]


ming@KITM-7664:~$ docker version
Client: Docker Engine - Community
Version:           19.03.13
API version:       1.40
Go version:        go1.13.15
Git commit:        4484c46d9d
Built:             Wed Sep 16 17:02:52 2020
OS/Arch:           linux/amd64
Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
243782 次浏览

你确定 Docker 在你的系统上运行吗?当 Comose 无法通过 docker socket 连接到 docker 时(如果没有定义任何其他连接方式) ,可能会出现该错误。

如果在 Linux 上运行,通常可以运行 systemctl status docker来检查 docker 守护进程是否正在运行,并运行 systemctl start docker来启动它。

这将有助于告诉什么操作系统和 docker version是你使用。

当使用 用于 Linux 的 Windows 子系统时,需要为 Windows Docker 桌面(设置-> 资源-> WSL 集成-> 启用所需发行版的集成)中所需的发行版启用“ WSL 集成”。

WSL Integration

在 Windows 退出 Docker 并再次运行它有时会有帮助。显然不总是 Docker 正常启动。

在将 WindowsDocker 桌面升级到最新版本(20.10.2, build 2291f61)后,也出现了同样的问题。碰巧这个更新禁用了 WSL2与我的虚拟 Ubuntu 18.04的集成,我用它来运行大多数项目。

我是这样解决的:

  1. 打开 Docker 桌面
  2. 转到设置 > 资源 > WSL 集成
  3. 确保启用了您的分发版
  4. 重启码头
  5. 如果不需要重新启动 WSL2,docker 应该可以再次工作

Docker Desktop distro integration

sudo service docker start 或者
sudo service docker restart

我也有同样的问题,但是当我运行 Docker 服务器时,我设法解决了它。

像这样设置许可,

sudo chmod 666 /var/run/docker.sock

当我尝试运行 docker-compose和 docker 桌面被关闭时,我也得到了这个错误,我认为这是 docker 中的 bug ——没有通知用户这个问题是因为 docker 服务关闭了,正如 docker cli 抛出了正确的错误:

C:\Users\x\IdeaProjects\mongo-exmple>docker pull node
Using default tag: latest
error during connect: This error may indicate that the docker daemon is not running.: Post "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/images/create?fromImage=node&tag=latest": open //./pipe/docker_engine: The system cannot find
the file specified.

我有一个类似的问题,它原来是由于多克服务器没有运行。我启动了这个应用程序,然后运行 docker-compose up,它开始正常工作。希望它能帮助任何陷入类似情况的人。:-)

默认情况下,Docker 命令只能由 root 用户或 Docker 组中的用户运行,这是在 Docker 安装过程中自动创建的。如果您想避免在运行 docker 命令时输入 sudo,请将您的用户名添加到 docker 组:

sudo usermod -aG docker ${USER}

要应用新的组成员资格,请退出服务器并重新登录,或键入以下内容:

su - ${USER}

系统将提示您输入用户密码以继续。

您没有使用 docker 套接字的权限,默认情况下只有 docker组可以访问它。您可以使用 ls -l /var/run/docker.sock验证这一点,它将打印如下内容:

srw-rw----. 1 root docker 0 Oct  4 18:04 /var/run/docker.sock

要访问套接字并使用 Docker,请使用以下命令将自己添加到 Docker 组:

sudo usermod -a -G docker $(whoami)

然后注销,再回来,码头现在可以工作了。

在 Linux (至少是 Ubuntu 18.04.x)中,有时需要注销并重新登录 X 用户会话。退出 bash 或退出终端窗口并重新登录是不够的,例如 https://askubuntu.com/questions/1161020/groups-and-groups-user-show-different-groups-dialout-is-missing

如果在 podman中使用 docker-compose,请尝试下面的命令来解决这个问题 "docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))"

systemctl start podman.socket

我在 Mac 上升级操作系统后发生了这种情况。

我能够在命令行上运行 docker,但是 Docker 桌面没有运行-启动 Docker 桌面修复了这个问题。

确保你选中了“使用 Docker ComposeV2”,它为我解决了这个问题。 Docker 桌面

在 Mac OS 和 Windows 系统中,有时启动 docker 应用程序就足够了,这个错误是因为系统中丢失了 docker 守护进程。

我在 windows 上使用 ubuntu 22.04 wsl 时遇到了这个问题,然后我这样解决了它

sudo update-alternatives --config iptables

它会显示类似这样的东西

 Selection    Path                       Priority   Status
------------------------------------------------------------
0            /usr/sbin/iptables-nft      20        auto mode
* 1            /usr/sbin/iptables-legacy   10        manual mode
2            /usr/sbin/iptables-nft      20        manual mode

然后按1

Press <enter> to keep the current choice[*], or type selection number: 1

使用服务启动码头

sudo service docker start

我的问题是我没有登录到 Docker 桌面。