gpt4 book ai didi

python - 如何检查 docker 实例是否正在运行?

转载 作者:行者123 更新时间:2023-11-28 17:29:26 30 4
gpt4 key购买 nike

我正在使用 Python 启动 docker 实例。

如何确定它们是否正在运行?我可以很容易地从终端使用 docker ps,例如:

docker ps | grep myimagename

如果返回任何内容,则图像正在运行。如果它返回一个空字符串,则图像没有运行。

但是,我不明白如何让 subprocess.Popen 来处理这个 - 它需要一个 arguments 列表,比如:

    p = subprocess.Popen(['docker', 'ps', '|', 'grep', 'myimagename'], stdout=subprocess.PIPE)
print p.stdout

不起作用,因为它试图采用“docker ps”并使其成为“docker”和“ps”命令(docker 不支持)。

我似乎也不能给它完整的命令,因为 Popen 试图将 整个 第一个参数作为可执行文件运行,所以失败了:

    p = subprocess.Popen('docker ps | grep myimagename', stdout=subprocess.PIPE)
print p.stdout

有没有办法从 Python 实际运行 docker ps?我不知道尝试使用 subprocess 是否是最佳途径。然而,我正在使用它来运行 docker 容器,所以它似乎是正确的路径。

  • 如何确定 docker 实例是否从 Python 脚本运行?

最佳答案

您可以使用 python docker 客户端:

import docker
DOCKER_CLIENT = docker.DockerClient(base_url='unix://var/run/docker.sock')
RUNNING = 'running'

def is_running(container_name):
"""
verify the status of a sniffer container by it's name
:param container_name: the name of the container
:return: Boolean if the status is ok
"""
container = DOCKER_CLIENT.containers.get(container_name)

container_state = container.attrs['State']

container_is_running = container_state['Status'] == RUNNING

return container_is_running

my_container_name = "asdf"
print(is_running(my_container_name))

关于python - 如何检查 docker 实例是否正在运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586900/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com