首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在同一个码头中列出容器-组合

在同一个码头中列出容器-组合
EN

Stack Overflow用户
提问于 2017-01-30 14:11:33
回答 2查看 1.8K关注 0票数 4

我正在开发一个利用docker-compose的应用程序。其中一个容器是一个看门狗组件,它定期运行一个小python脚本来获取同级容器的状态,并在其中一个容器停止时采取行动。

到目前为止,我使用了应该监视的所有容器名称的列表,但现在我想知道,我只需查看由同一个docker-compose命令创建的所有容器。

以前,代码看起来如下所示:

代码语言:javascript
运行
复制
watched_containers = ["component-a", "component-b"]
def inspect_containers():
    containers = {
        (container["Names"][0].lstrip("/"), container)
        for container in docker.Client().containers(all=True)
    }

    for container_name in watched_containers:
        if containers.get(container_name, {}).get("State") != "running":
            alert_container_stopped(container_name)

我发现dockerpy不知道docker-compose,所以我创建了一个基于docker-组合项目名称标签(com.docker.compose.project)过滤容器的函数,但是现在我有了一个硬编码的项目名称,而不是容器名称。是否有获取当前项目名称的方法,或者是否有其他方法获得相同组合中的容器列表?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-30 18:44:13

这只是我头上的一个快速想法。

当您在看门狗容器中使用Docker客户端库时,我假设您可以从看门狗容器中访问主机的Docker。由于每个容器的主机名默认是容器ID,所以可以使用它让看门狗容器从Docker中查找自己的标签。

下面是一个使用Docker的示例;Python应该以完全相同的方式工作:

代码语言:javascript
运行
复制
$ COMPOSE_PROJECT=$(docker inspect -f '{{ (index .Config.Labels "com.docker.compose.project") }}' $HOSTNAME)

然后使用项目名称获取剩余的容器:

代码语言:javascript
运行
复制
$ docker ps -aq -f label=com.docker.compose.project=$COMPOSE_PROJECT
票数 3
EN

Stack Overflow用户

发布于 2021-06-30 19:15:01

新的(2021年6月) 码头人员组成V2可以通过以下方式简化此查询:

docker compose ls

列出正在运行的撰写项目

因为撰写是Docker命令的一部分,所以您可以从python程序调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41937975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档