首页 > 解决方案 > 尝试获取容器列表时出现 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

我错过了什么或做错了什么导致这个错误?

标签: pythondockerdockerpy

解决方案


再次浏览文档后,我相当确定以下内容是正确的。

docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock')
docker_client.containers.list()

https://docker-py.readthedocs.io/en/stable/containers.html#docker.models.containers.ContainerCollection.list


推荐阅读