如何全局显示由 docker-compose 创建的所有正在运行的容器,而不考虑 docker-compose.yml

Gul*_*zar 9 docker docker-compose

我有几个docker-compose.yml文件,分别运行正常docker-compose up

每个 docker-compose 运行多个容器。

它们起来之后,我看不到哪些容器已经起来了docker ps
我可以看到 的内容docker-compose ps,但仅限于特定的 docker-compose.yml。

我想要访问容器状态的全局轮询​​。

如何列出所有正在运行的容器,无论其来源如何?

The*_*ool 20

Docker compose 为其创建的每个容器添加标签。如果您想获取 compose 创建的所有容器,可以执行容器 ls 并应用过滤器。

\n
docker container ls --filter label=com.docker.compose.project\n
Run Code Online (Sandbox Code Playgroud)\n

这将显示由 compose 创建的所有正在运行的容器,无论项目名称如何。

\n

例如,我从不同的 compose 项目创建了一些容器。使用过滤器,我只得到那些,但没有其他容器不是由 compose 创建的,因此没有项目标签。

\n
$ base=\'{{.Status}}\\t{{.ID}}\\t{{.Names}}\\t{{.Image}}\\t{{.Ports}}\\t{{.Networks}}\\t{{.Mounts}}\'\n$ compose=\'{{.Label "com.docker.compose.project"}}\\t{{.Label "com.docker.compose.service"}}\'\n\n$ docker container ls --all \\\n  --filter label=com.docker.compose.project \\\n  --format "table $compose\\t$base"\n\nproject        service     STATUS                      CONTAINER ID   NAMES                IMAGE                   PORTS                                                                     NETWORKS               MOUNTS\nkafka          kafka       Up 5 minutes                3f97a460266e   kafka_kafka_1        bitnami/kafka:3         0.0.0.0:9092->9092/tcp, :::9092->9092/tcp                                 kafka_default          kafka_kafka_da\xe2\x80\xa6,kafka_kafa_con\xe2\x80\xa6\nkafka          zookeeper   Up 5 minutes                0b6f32ccd196   kafka_zookeeper_1    bitnami/zookeeper:3.7   2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp   kafka_default          kafka_zookeepe\xe2\x80\xa6\nmanager        db          Up 22 minutes               4f0e799b4fd7   manager_db_1         da2cb49d7a8d            5432/tcp                                                                  manager_default        0d667a0e48a280\xe2\x80\xa6\nfoo            db          Exited (0) 37 minutes ago   e106c5cdbf5e   foo_db_1             da2cb49d7a8d                                                                                      foo_default            5a87e93627b8f6\xe2\x80\xa6\nfoo            backend     Up 10 minutes               08a0873c0587   foo_backend_2        c316d5a335a5            80/tcp                                                                    foo_default            \nfoo            frontend    Up 10 minutes               be723bf41aeb   foo_frontend_1       c316d5a335a5            80/tcp                                                                    foo_default            \nfoo            backend     Up 10 minutes               5d91d4bcfcb3   foo_backend_1        c316d5a335a5            80/tcp                                                                    foo_default            \nmanager        app         Up 22 minutes               2ca4c0920807   manager_app_1        c316d5a335a5            80/tcp                                                                    manager_default        \nmanager        app         Up 22 minutes               b2fa2b9724b0   manager_app_2        c316d5a335a5            80/tcp                                                                    manager_default        \nloadbalancer   app         Exited (0) 37 minutes ago   791f4059b4af   loadbalancer_app_1   c316d5a335a5                                                                                      loadbalancer_default   \n
Run Code Online (Sandbox Code Playgroud)\n

如果您想查看所有容器,无论其状态如何,您可以向 ls 命令添加--all或短-a标志,就像我在示例中所做的那样。否则,仅显示正在运行的容器。

\n