Docker-compose 出现意外的关键字参数‘ssl_version’

存档自 BrainFrame 论坛。发布于 2024年12月26日。 2 条回复 · 1104 次浏览 由英文原帖翻译成中文。 阅读原文

AOTU support

brainframe compose up 返回了下面的失败信息,

docker-compose --file /usr/local/share/brainframe/docker-compose.yml --env-file /usr/local/share/brainframe/.env up
Traceback (most recent call last):
File “.local/bin/docker-compose”, line 8, in 
sys.exit(main())
File “.local/lib/python3.8/site-packages/compose/cli/main.py”, line 81, in main
command_func()
File “.local/lib/python3.8/site-packages/compose/cli/main.py”, line 200, in perform_command
project = project_from_options(‘.’, options)
File “.local/lib/python3.8/site-packages/compose/cli/command.py”, line 60, in project_from_options
return get_project(
File “.local/lib/python3.8/site-packages/compose/cli/command.py”, line 152, in get_project
client = get_client(
File “.local/lib/python3.8/site-packages/compose/cli/docker_client.py”, line 41, in get_client
client = docker_client(
File “.local/lib/python3.8/site-packages/compose/cli/docker_client.py”, line 124, in docker_client
kwargs = kwargs_from_env(environment=environment, ssl_version=tls_version)
TypeError: kwargs_from_env() got an unexpected keyword argument ‘ssl_version’
AOTU support

或者运行 brainframe compose up 时出现“Not supported URL scheme http+docker”失败,

docker-compose --file /usr/local/share/brainframe/docker-compose.yml --env-file /usr/local/share/brainframe/.env up
Traceback (most recent call last):
File “.local/lib/python3.8/site-packages/requests/adapters.py”, line 633, in send
conn = self.get_connection_with_tls_context(
File “.local/lib/python3.8/site-packages/requests/adapters.py”, line 489, in get_connection_with_tls_context
conn = self.poolmanager.connection_from_host(
File “/usr/local/lib/python3.8/dist-packages/urllib3/poolmanager.py”, line 245, in connection_from_host
return self.connection_from_context(request_context)
File “/usr/local/lib/python3.8/dist-packages/urllib3/poolmanager.py”, line 257, in connection_from_context
raise URLSchemeUnknown(scheme)
urllib3.exceptions.URLSchemeUnknown: Not supported URL scheme http+docker

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “.local/lib/python3.8/site-packages/docker/api/client.py”, line 214, in _retrieve_server_version
return self.version(api_version=False)[“ApiVersion”]
File “.local/lib/python3.8/site-packages/docker/api/daemon.py”, line 181, in version
return self._result(self._get(url), json=True)
File “.local/lib/python3.8/site-packages/docker/utils/decorators.py”, line 46, in inner
return f(self, *args, **kwargs)
File “.local/lib/python3.8/site-packages/docker/api/client.py”, line 237, in _get
return self.get(url, **self._set_request_timeout(kwargs))
File “.local/lib/python3.8/site-packages/requests/sessions.py”, line 602, in get
return self.request(“GET”, url, **kwargs)
File “.local/lib/python3.8/site-packages/requests/sessions.py”, line 589, in request
resp = self.send(prep, **send_kwargs)
File “.local/lib/python3.8/site-packages/requests/sessions.py”, line 703, in send
r = adapter.send(request, **kwargs)
File “.local/lib/python3.8/site-packages/requests/adapters.py”, line 637, in send
raise InvalidURL(e, request=request)
requests.exceptions.InvalidURL: Not supported URL scheme http+docker

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “.local/bin/docker-compose”, line 8, in 
sys.exit(main())
File “.local/lib/python3.8/site-packages/compose/cli/main.py”, line 81, in main
command_func()
File “.local/lib/python3.8/site-packages/compose/cli/main.py”, line 200, in perform_command
project = project_from_options(‘.’, options)
File “.local/lib/python3.8/site-packages/compose/cli/command.py”, line 60, in project_from_options
return get_project(
File “.local/lib/python3.8/site-packages/compose/cli/command.py”, line 152, in get_project
client = get_client(
File “.local/lib/python3.8/site-packages/compose/cli/docker_client.py”, line 41, in get_client
client = docker_client(
File “.local/lib/python3.8/site-packages/compose/cli/docker_client.py”, line 170, in docker_client
client = APIClient(use_ssh_client=not use_paramiko_ssh, **kwargs)
File “.local/lib/python3.8/site-packages/docker/api/client.py”, line 197, in init
self._version = self._retrieve_server_version()
File “.local/lib/python3.8/site-packages/docker/api/client.py”, line 221, in _retrieve_server_version
raise DockerException(
docker.errors.DockerException: Error while fetching server API version: Not supported URL scheme http+docker
AOTU support

BrainFrame 使用 docker 把自己与主机环境隔离。根据主机系统上的可用组件,“brainframe compose up”会使用以下命令之一:

Docker Compose V1,

docker-compose --file /usr/local/share/brainframe/docker-compose.yml --env-file /usr/local/share/brainframe/.env up

Docker Compose V2,

docker compose --file /usr/local/share/brainframe/docker-compose.yml --env-file /usr/local/share/brainframe/.env up

docker compose 失败通常是由主机上安装的各种 docker 组件(例如 docker 服务端、CLI 和 compose 模块)的兼容性问题引起的。模块版本冲突会导致这篇帖子中的问题。下面是排查和解决版本兼容性问题的方法:

1 重新安装 Docker Python 包

卸载现有的包:

pip uninstall docker docker-compose

如果这些包安装在多个位置,你可能需要多次运行卸载命令。然后安装特定的兼容版本:

pip install docker==6.1.3 docker-compose==1.29.2

2 使用 Docker Compose V2(可选,但推荐)

Docker Compose V2 现已作为 Docker 插件集成,不依赖 Python 包。安装 Docker Compose V2:

sudo apt-get update
sudo apt-get install docker-compose-plugin

验证安装:

docker compose version

注意,V2 的命令是 docker compose(用空格而不是连字符)。

3 docker 与 docker compose 版本说明

请确保使用兼容的版本。以下是对 2024 年 12 月时兼容的最新版本的观察结果

Ubuntu        | docker engine | docker compose | docker python SDK
18.04 & 20.04 | 24.0.7        | V1: v1.29.2    | >4.3.1,<7.0.0, 6.1.3 is the latest version
22.04 & 24.04 | 27.3.1        | V2: v2.29.7    | 6.1.3 and possibly a few older versions

3.1 docker engine 版本

docker version --format '{{.Server.Version}}'    # engine version
docker version --format '{{.Server.APIVersion}}' # engine API version

请注意,docker engine 的安装包含 docker CLI,并且 docker compose V2 已集成在内。

3.2 docker CLI 版本

docker version --format '{{.Client.Version}}'    # CLI version
docker version --format '{{.Client.APIVersion}}' # CLI API version
docker --version # CLI version

3.3 docker compose V1 版本

用下面的 pip 命令安装 docker compose V1。docker-compose python 包就是 compose V1,包括 docker-compose CLI 工具和 python API,目前已知可用的最新 compose V1 版本是 1.29.2

pip install docker-compose

检查 docker compose V1 版本,

docker-compose --version # compose V1 version

或使用下面任意一条命令:

docker-compose version # 还会显示 docker-py、CPython、OpenSSL 的版本
python3 -m compose --version
pip show docker-compose

docker python 模块版本与 docker-compose python 模块版本

docker python 模块是 Python 的 docker SDK。用下面的命令安装 docker python SDK。该模块包含部分 compose 功能,但不包含 compose up/down。你不能直接执行 docker pip 模块

pip install docker

docker-compose 模块依赖 docker SDK python 模块
docker-compose 模块兼容 docker SDK >4.3.1,<7.0.0
docker-compose 模块不兼容 docker SDK 7.0.0/7.1.0
docker SDK python 模块 6.1.3 是同时兼容 compose V1 和 V2 的最新版本

3.4 Docker compose V2 版本

Docker compose V2 已作为 docker 插件集成

docker compose version # compose V2 version
© 2026 Dilili Labs 版权所有 · 网站隐私声明
Built on 2026-10-10 00:24:35 UTC