繁体   English   中英

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

[英]How to show all running containers created by docker-compose, globally, regardless of docker-compose.yml

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

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

在它们启动后,我看不到docker ps有哪些容器。
我可以看到docker-compose ps的一些东西,但仅限于特定的 docker-compose.yml。

我想访问容器 state 的全局轮询。

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

这是根据您的问题的线索进行的猜测。

当您通过docker-compose up运行容器时,请注意按CTRL+C实际上会停止您的容器。

这是执行此操作的示例:

$ docker-compose up
[+] Running 1/0
 ⠿ Container docker-test-1  Created                                  0.0s
Attaching to docker-test-1
^CGracefully stopping... (press Ctrl+C again to force)
[+] Running 1/1
 ⠿ Container docker-test-1  Stopped                                 10.2s
canceled

这里的重要部分是: ^CGracefully stopping...

如果你想让它们继续运行,你必须在-d选项的帮助下以分离模式运行docker-compose up

 -d, --detach Detached mode: Run containers in the background, print new container names. Incompatible with --abort-on-container-exit.

资料来源: https://docs.docker.com/compose/reference/up/


这样做,

docker-compose up -d && docker ps

实际上应该给你你所期望的。
例如:

$ docker-compose up -d && docker ps
[+] Running 2/2
 ⠿ Network docker_default   Created                                                                                   0.1s
 ⠿ Container docker-test-1  Started                                                                                   0.5s
CONTAINER ID   IMAGE     COMMAND               CREATED        STATUS                  PORTS     NAMES
ab9f422247c9   alpine    "tail -f /dev/null"   1 second ago   Up Less than a second             docker-test-1

如果你想查看所有容器,不管它们的 state,你可以使用docker ps-a选项。

 --all, -a Show all containers (default shows just running)

资料来源: https://docs.docker.com/engine/reference/commandline/ps/

例如:

$ docker-compose up  
[+] Running 2/2
 ⠿ Network docker_default   Created                                                                                   0.1s
 ⠿ Container docker-test-1  Created                                                                                   0.1s
Attaching to docker-test-1
^CGracefully stopping... (press Ctrl+C again to force)
[+] Running 1/1
 ⠿ Container docker-test-1  Stopped                                                                                  10.2s
canceled
$ docker ps -a
CONTAINER ID   IMAGE                 COMMAND               CREATED          STATUS                       PORTS     NAMES
615bcc6f1e50   alpine                "tail -f /dev/null"   18 seconds ago   Exited (137) 3 seconds ago             docker-test-1

Docker compose 将标签添加到它创建的每个容器。 如果要获取 compose 创建的所有容器,可以执行容器 ls 并应用过滤器。

docker container ls --filter label=com.docker.compose.project

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

例如,我在 2 个不同的撰写项目中创建了 2 个应用程序。 负载均衡器管理器 使用该命令,我将两者都返回,但没有其他尚未由 compose 创建的容器,因此不包含项目 label。

$ docker container ls --filter label=com.docker.compose.project --format \
   'table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Label "com.docker.compose.project"}}\t{{.Networks}}'

CONTAINER ID   NAMES                STATUS          project        NETWORKS
791f4059b4af   loadbalancer_app_1   Up 11 minutes   loadbalancer   loadbalancer_default
8d26e4503721   manager_app_1        Up 24 minutes   manager        manager_default

列出 docker 中所有正在运行的容器

$码头工人ps

当容器正在运行并作为 docker-compose.yml 文件中存在的 docker 定义的一部分创建时。 在基本情况下,我会做

$docker-compose up -d

启动容器并使用以下命令检查容器是否正在运行

$ docker-compose ps

第一个命令也应该包含来自 compose 命令的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM