使用docker-py 5.0.0获取容器列表触发TypeError错误如何解决
问题原因
你遇到的报错和Docker引擎API版本无关,是调用方式使用了docker-py 1.x版本的旧语法:docker-py 2.0及后续版本重构了上层SDK接口,docker_client.containers现在是容器集合对象,并非可调用方法,加括号执行自然会触发类型错误。
解决方案
方案1:使用新版SDK推荐写法(优先推荐)
直接调用容器集合的list()方法即可获取容器列表:
- 默认仅返回运行中的容器:
docker_containers = docker_client.containers.list()
- 如需返回所有状态(包括已停止)的容器,添加
all=True参数:
docker_containers = docker_client.containers.list(all=True)
方案2:兼容旧版API写法
如果需要兼容1.x版本的调用逻辑,可以按照报错提示改用低级接口APIClient,示例如下:
docker_client = docker.APIClient(base_url='unix://var/run/docker.sock', version="1.41") docker_containers = docker_client.containers()
注意该方案使用的是低级API,返回结果为原生字典格式,没有新版SDK的对象封装能力,非必要不建议使用。
内容的提问来源于stack exchange,提问作者Bruc3
相关产品推荐
相关产品推荐

