我正在尝试使用 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'],但没有成功。我可以知道得到我要求的结果
最佳答案
docker 中的大量 id 令人困惑。
您可以阅读有关 id 类型的信息 here .
当您了解什么是容器 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 上正常运行。 .
关于python-3.x - 如何从docker-py获取容器ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63534480/