首页 > 解决方案 > 如何从 docker-py 获取容器 ID

问题描述

我正在尝试使用 docker-py 模块的过滤器检查 docker 容器是否已启动。但是能够检查它是向上还是向下。以供参考 :

def checkDockerContainerStatus( container):
    client = docker.from_env()
    cli = docker.APIClient()
    if client.containers.list(filters={'name': container}):
        response = client.containers.list(filters={'name': container})
        return 'Up'
    else:
        return 'Down'

checkDockerContainerStatus('app-container')

我得到了响应[<Container: eb42d23b6f>] 如何从该响应中检索容器 id 以检查它是否为 log 。

我尝试了 response['container'] ,但没有成功。我可以知道得到我要求的结果吗

标签: python-3.xdockerdockerpy

解决方案


很多 id 在 docker 中令人困惑。

您可以在此处阅读有关 id 类型的信息。

当您了解什么是容器 id 的短格式和长格式时,您的代码可能类似于:

import docker

def checkDockerContainerStatus( container):
    client = docker.from_env()
    #cli = docker.APIClient()
    if client.containers.list(filters={'name': container}):
        response = client.containers.list(filters={'name': container})
        return str(response[0].id)[:12]
    else:
        return None

running_id = checkDockerContainerStatus('app-container')

if running_id is not None:
    print(f"Found! {running_id}")
else:
    print("Container app-container is not found")

另外我建议使用docker SDK而不是 docker-py。

您的代码不会在 docker-py 上运行并在docker SDK上正常运行。


推荐阅读