python - 尝试获取容器列表时出现 docker-py 错误
问题描述
如果我遗漏了一些明显的东西,我深表歉意。我正在尝试使用 docker-py 5.0.0 版和 python 3.6 连接到我的本地 docker 引擎并运行命令,但是当我尝试访问正在运行的容器列表时收到错误消息。我在 docker:stable 容器和运行 Ubuntu 18.04 的服务器上收到了同样的错误。
这是我如何得到错误的一个例子:
$ python3
>>> import docker
>>> print(docker.__version__)
5.0.0
>>> docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock', version="1.41")
>>> docker_containers = docker_client.containers()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/site-packages/docker/models/resource.py", line 67, in __call__
raise TypeError(
TypeError: 'ContainerCollection' object is not callable. You might be trying to use the old (pre-2.0) API - use docker.APIClient if so.
这是我目前正在运行的 docker 版本:
$ docker version
Client: Docker Engine - Community
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:54:08 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:52:16 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0
据我所知,目前最新版本的 docker engine API 是1.41。
我错过了什么或做错了什么导致这个错误?
解决方案
再次浏览文档后,我相当确定以下内容是正确的。
docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock')
docker_client.containers.list()
推荐阅读
- c++ - 查找规则如何应用于类模板中默认成员初始值设定项中使用的名称?
- sed - sed 与 find 结合使用时没有这样的文件或目录?
- rust - Rust:返回一个引用当前函数拥有的数据的值
- python - ImportError:无法从“django.forms.forms”导入名称“BoundField”
- c# - C#中的“事件=方法”是什么意思
- python-3.x - 在 python3 中断言
- asp.net - [Microsoft][ODBC Driver Manager] 数据源名称太长
- swagger - nestjs swagger 中的可选 URL 参数
- http - Axios http GET 有效,但将有效负载数据显示为 [object] 而不是 JSON
- django - Django Channels 从视图发送到组