You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pytest-docker-compose插件时Docker API版本获取失败问题

问题:pytest-docker-compose:3.2.1 插件重启系统后无法连接Docker守护进程

错误详情

运行pytest测试时触发以下错误:

def _retrieve_server_version(self):
    try:
        return self.version(api_version=False)["ApiVersion"]
    except KeyError:
        raise DockerException(
            'Invalid response from docker daemon: key "ApiVersion"'
            ' is missing.'
        )
    except Exception as e:
INFO    2022-11-17 19:24:43,005 Done running pytest tests [tests_runner.py:run_pytest:79]
ERROR   2022-11-17 19:24:43,013 pytest exited with a nonzero exit code: 1 [tests_runner.py:run_pytest:83]
INFO    2022-11-17 19:24:43,020 Removing the test sidecar [live_cp_test.py:remove_sidecar:68]
WARNING 2022-11-17 19:24:45,752 Skipping 'prepare_artifacts', requires cloudbuild [live_cp_test.py:prepare_artifacts:74]
WARNING 2022-11-17 19:24:45,756 Skipping 'prepare_and_send_slack_update' (Requires cloudbuild) [live_cp_test.py:prepare_and_send_slack_update:97]
>           raise DockerException(
                f'Error while fetching server API version: {e}'
            )
E           docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

环境信息

  • 操作系统:MacOS Monterey 12.6
  • Docker版本:
Client:
 Cloud integration: v1.0.29
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.7
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:18 2022
 OS/Arch:           darwin/amd64
 Context:           desktop-linux
 Experimental:      true

Server: Docker Desktop 4.14.1 (91661)
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.7
  Git commit:       3056208
  Built:            Tue Oct 25 18:00:19 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.9
  GitCommit:        1c90a442489720eec95342e1789ee8a5e1b9536f
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
  • docker-compose版本:
Docker Compose version v2.12.2
  • 运行命令:
docker run --env-file ./env.list -v /var/run/docker.sock:/var/run/docker.sock -v /Users/f/.config/gcloud:/root/.config/gcloud -v /Users/f/.docker:/root/.docker -v /Users/f/work/tests:/Users/f/work/tests --net=host -ti --rm test_image /Users/f/work/tests/run_in_docker bash -c '2>&1 make install && poetry run e2e live-cp-test --tests-path tests'

问题特征

Docker刚安装完成时可正常运行,系统重启后每次使用该pytest插件都会触发上述错误。


解决方案

1. 确保Docker Desktop自动启动并运行

系统重启后Docker Desktop可能未自动启动,导致/var/run/docker.sock无法访问:

  • 打开Docker Desktop偏好设置 → 通用 → 勾选"Open Docker Desktop when you log in"
  • 手动启动Docker Desktop,等待守护进程完全就绪后再执行测试命令

2. 检查Docker Socket的权限与挂载有效性

  • 本地验证:执行ls -l /var/run/docker.sock,若文件不存在,说明Docker守护进程未启动
  • 容器权限:在运行命令中添加--user root,确保容器内用户拥有访问挂载sock文件的权限

3. 重置Docker上下文

系统重启后Docker上下文可能出现异常,执行以下操作:

  • 运行docker context use desktop-linux(与当前上下文保持一致)
  • 重启Docker Desktop,确保上下文正常加载

4. 验证容器内Docker客户端兼容性

容器内Docker客户端版本需与宿主机守护进程API版本匹配:

  • 在容器内执行docker version,查看客户端版本,若差异过大,更新容器内Docker客户端至兼容版本

内容的提问来源于stack exchange,提问作者MR.i

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:10:35