我面临一个奇怪的问题。我有3个这样的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=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
中将我的ExecStart参数设置为/lib/systemd/system/docker.service file
我是否需要以某种不同的方式连接到docker,以便获取我所有docker容器的信息。
答案 0 :(得分:2)
尝试:
containers = cli.containers.list(all=True)
从文档中
list(**kwargs)
List containers. Similar to the docker ps command.
Parameters:
all (bool) – Show all containers. Only running containers are shown by default
答案 1 :(得分: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