DockerException:获取服务器 API 版本时出错:MacOS M1 Orbstack

问题描述 投票:0回答:1

我想在我的 docker 容器中执行以下命令:

import docker

client = docker.from_env()

但是我遇到了(已知的):

上述异常是导致以下异常的直接原因:

Traceback (most recent call last):
  File "/workspaces/StatisticalArbitrage/test.py", line 3, in <module>
    client = docker.from_env()
             ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/docker/client.py", line 94, in from_env
    return cls(
           ^^^^
  File "/usr/local/lib/python3.11/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/docker/api/client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/docker/api/client.py", line 220, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

我阅读了所有帖子,但找不到解决方案。感谢您的帮助!!

我的设置: MacOS M1,使用 Orbstack。

docker version

客户: 版本:25.0.3 API版本:1.44 Go版本:go1.21.6 Git 提交:4debf41 建成时间:2024 年 2 月 6 日星期二 21:13:26 操作系统/架构:darwin/arm64 上下文:orbstack

服务器:Docker 引擎 - 社区 引擎: 版本:25.0.3 API版本:1.44(最低版本1.24) Go版本:go1.21.6 Git 提交:f417435 建成时间:2024 年 2 月 6 日星期二 21:14:35 操作系统/架构:linux/arm64 实验:假 容器: 版本:v1.7.13 GitCommit:7c3aca7a610df76212171d200ca3811ff6096eb8 运行: 版本:1.1.12 GitCommit:51d5e94601ceffbbd85688df1c928ecccbfa4685 docker-init: 版本:0.19.0 GitCommit:de40ad0

docker info

客户: 版本:25.0.3 上下文:orbstack 调试模式:假 插件: buildx:Docker Buildx(Docker Inc.) 版本:v0.12.1 路径:/Users/simonleiner/.docker/cli-plugins/docker-buildx 撰写:Docker Compose(Docker Inc.) 版本:v2.23.3 路径:/Users/simonleiner/.docker/cli-plugins/docker-compose 警告:插件“/Users/simonleiner/.docker/cli-plugins/docker-dev”无效:无法获取元数据:fork/exec /Users/simonleiner/.docker/cli-plugins/docker-dev:没有这样的文件或目录 警告:插件“/Users/simonleiner/.docker/cli-plugins/docker-extension”无效:无法获取元数据:fork/exec /Users/simonleiner/.docker/cli-plugins/docker-extension:没有这样的文件或目录 警告:插件“/Users/simonleiner/.docker/cli-plugins/docker-init”无效:无法获取元数据:fork/exec /Users/simonleiner/.docker/cli-plugins/docker-init:没有这样的文件或目录 警告:插件“/Users/simonleiner/.docker/cli-plugins/docker-sbom”无效:无法获取元数据:fork/exec /Users/simonleiner/.docker/cli-plugins/docker-sbom:没有这样的文件或目录 警告:插件“/Users/simonleiner/.docker/cli-plugins/docker-scan”无效:无法获取元数据:fork/exec /Users/simonleiner/.docker/cli-plugins/docker-scan:没有这样的文件或目录 警告:插件“/Users/simonleiner/.docker/cli-plugins/docker-scout”无效:无法获取元数据:fork/exec /Users/simonleiner/.docker/cli-plugins/docker-scout:没有这样的文件或目录

服务器: 容器:2 跑步:1 暂停:0 已停止:1 图片:6 服务器版本:25.0.3 存储驱动程序:overlay2 支持文件系统:btrfs 支持 d_type: true 使用元复制: false 原生覆盖差异:true 用户x属性:假 日志记录驱动程序:json-file Cgroup 驱动程序:cgroupfs Cgroup版本:2 插件: 音量:本地 网络:桥接主机 ipvlan macvlan null 覆盖 日志:awslogs fluidd gcplogs gelf Journald json-file 本地 splunk syslog 群:不活跃 运行时:io.containerd.runc.v2 runc 默认运行时:runc 初始化二进制文件:docker-init 容器版本:7c3aca7a610df76212171d200ca3811ff6096eb8 runc版本:51d5e94601ceffbbd85688df1c928ecccbfa4685 初始化版本:de40ad0 安全选项: 安全计算 简介:内置 组群 内核版本:6.5.13-orbstack-00122-g57b8027e2387 操作系统:OrbStack 操作系统类型:linux 架构:aarch64 CPU:8 总内存:2.513GiB 名称: 球体堆栈 编号:98b73600-a3c5-4e6f-90d2-8a3f38648f73 Docker 根目录:/var/lib/docker 调试模式:假 实验:假 不安全的注册表: 127.0.0.0/8 启用实时恢复: false 产品许可证:社区引擎

docker context ls 

名称 描述 Docker 端点错误 默认当前基于 DOCKER_HOST 的配置 unix:///var/run/docker.sock
桌面Linux Docker桌面unix:///Users/simonleiner/.docker/run/docker.sock
orbstack * OrbStack unix:///Users/simonleiner/.orbstack/run/docker.sock

docker macos
1个回答
0
投票

我认为您对 Orbstack 和 docker SDK 感到困惑。

球体堆栈

Orbstack 是 Docker Desktop 的第三方替代品(仅限 macOS),这意味着您可以运行 docker 容器、构建映像等。

用于 python 的 docker SDK

docker SDK 作为 python 包,用于与 Docker 守护进程交互

如果我从你的问题中了解到你正在尝试通过Python代码与Docker守护进程交互。 请参阅下面来自 Docker SDK for python docs的引用。

要与 Docker 守护进程通信,首先需要实例化一个客户端。最简单的方法是调用函数 from_env()。也可以通过实例化 DockerClient 类来手动配置

因此,如果您需要运行 python 来使用 Docker 守护进程,请使用

pip
安装 docker 软件包。

$ pip install docker
Collecting docker
  Using cached docker-7.0.0-py3-none-any.whl.metadata (3.5 kB)
Requirement already satisfied: packaging>=14.0 in /usr/local/lib/python3.8/site-packages (from docker) (23.2)
Collecting requests>=2.26.0 (from docker)
...
...
Successfully installed docker-7.0.0 requests-2.31.0 urllib3-2.2.1

$ python
>>> import docker
>>> client = docker.from_env()
© www.soinside.com 2019 - 2024. All rights reserved.