Python Docker客户端仅列出正在运行的容器。

7
我遇到了一个奇怪的问题。我有三个像这样的Docker容器 -
root@dimension-VirtualBox:/home/dimension/neo4j# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                                                      NAMES
eee581b2f493        neo4j:3.3.3         "/docker-entrypoint.…"   3 months ago        Up 22 minutes               0.0.0.0:7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp   skill-ontology
bb99a4eb65ad        neo4j:3.3.3         "/docker-entrypoint.…"   3 months ago        Exited (0) 22 minutes ago                                                              skill-ontology-old
2a3a1e300782        neo4j:3.3.3         "/docker-entrypoint.…"   3 months ago        Exited (0) 30 hours ago                                                                romantic_mccarthy

我写了一个简单的Python脚本,使用Docker的Python库来列出我的Docker容器。我正在使用docker==3.7.0版本的库。这是我的代码。我正在使用Ubuntu 18.04机器。
import docker
# same result with below line
#cli = docker.client.DockerClient(base_url='tcp://127.0.0.1:2375')
cli = docker.DockerClient(base_url='tcp://127.0.0.1:2375')
containers = cli.containers.list()

cont =containers[0]
print(len(containers))
print(cont.short_id)

结果是:
1
eee581b2f4

它的输出是1,但应该输出3。
我已将ExecStart参数设置为 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 在我的/lib/systemd/system/docker.service文件中。
我需要以某种不同的方式连接到docker才能获取所有docker容器的信息吗?
2个回答

11

1

好消息是:

stopped_docker_container = cli.containers.list(all=True, filters={'name':'stopped_container_name'})

显示已停止的容器为

stopped_docker_container = cli.containers.list(filters={'name':'stopped_container_name'})

无法显示已停止的容器。

文档中并不是很清楚,但关键点在于

cli.containers.list(all=True)

感谢 @Dmytro Prylipko


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接