如何全局显示 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.
我想访问容器状态的全局轮询。
如何列出所有 运行 个容器,无论其来源如何?
这里是根据你问题的线索进行的猜测。
当您通过 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...
如果你想保留它们 运行ning,你必须 运行 docker-compose up
在 detached 模式下,借助帮助-d
选项。
-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
如果您想查看所有容器,无论其状态如何,您可以使用 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创建的所有容器,可以执行container ls并应用过滤器。
docker container ls --filter label=com.docker.compose.project
这将显示由 compose 创建的所有 运行 容器,无论项目名称如何。
例如,我从不同的 compose 项目中创建了一些容器。使用过滤器,我只得到那些,但没有其他容器不是由 compose 创建的,因此没有项目标签。
$ base='{{.Status}}\t{{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Ports}}\t{{.Networks}}\t{{.Mounts}}'
$ compose='{{.Label "com.docker.compose.project"}}\t{{.Label "com.docker.compose.service"}}'
$ docker container ls --all \
--filter label=com.docker.compose.project \
--format "table $compose\t$base"
project service STATUS CONTAINER ID NAMES IMAGE PORTS NETWORKS MOUNTS
kafka 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…,kafka_kafa_con…
kafka 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…
manager db Up 22 minutes 4f0e799b4fd7 manager_db_1 da2cb49d7a8d 5432/tcp manager_default 0d667a0e48a280…
foo db Exited (0) 37 minutes ago e106c5cdbf5e foo_db_1 da2cb49d7a8d foo_default 5a87e93627b8f6…
foo backend Up 10 minutes 08a0873c0587 foo_backend_2 c316d5a335a5 80/tcp foo_default
foo frontend Up 10 minutes be723bf41aeb foo_frontend_1 c316d5a335a5 80/tcp foo_default
foo backend Up 10 minutes 5d91d4bcfcb3 foo_backend_1 c316d5a335a5 80/tcp foo_default
manager app Up 22 minutes 2ca4c0920807 manager_app_1 c316d5a335a5 80/tcp manager_default
manager app Up 22 minutes b2fa2b9724b0 manager_app_2 c316d5a335a5 80/tcp manager_default
loadbalancer app Exited (0) 37 minutes ago 791f4059b4af loadbalancer_app_1 c316d5a335a5 loadbalancer_default
如果您想查看所有容器而不考虑它们的状态,您可以将 --all
或简短的 -a
标志添加到 ls 命令,就像我在示例中所做的那样。否则,仅显示 运行 个容器。
我有几个 docker-compose.yml
文件,运行 可以 docker-compose up
,单独。
每个 docker-compose 运行多个容器。
它们起来后,我看不到什么容器都起来了docker ps
。
我可以看到带有 docker-compose ps
的内容,但仅限于特定的 docker-compose.yml.
我想访问容器状态的全局轮询。
如何列出所有 运行 个容器,无论其来源如何?
这里是根据你问题的线索进行的猜测。
当您通过 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...
如果你想保留它们 运行ning,你必须 运行 docker-compose up
在 detached 模式下,借助帮助-d
选项。
-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
如果您想查看所有容器,无论其状态如何,您可以使用 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创建的所有容器,可以执行container ls并应用过滤器。
docker container ls --filter label=com.docker.compose.project
这将显示由 compose 创建的所有 运行 容器,无论项目名称如何。
例如,我从不同的 compose 项目中创建了一些容器。使用过滤器,我只得到那些,但没有其他容器不是由 compose 创建的,因此没有项目标签。
$ base='{{.Status}}\t{{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Ports}}\t{{.Networks}}\t{{.Mounts}}'
$ compose='{{.Label "com.docker.compose.project"}}\t{{.Label "com.docker.compose.service"}}'
$ docker container ls --all \
--filter label=com.docker.compose.project \
--format "table $compose\t$base"
project service STATUS CONTAINER ID NAMES IMAGE PORTS NETWORKS MOUNTS
kafka 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…,kafka_kafa_con…
kafka 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…
manager db Up 22 minutes 4f0e799b4fd7 manager_db_1 da2cb49d7a8d 5432/tcp manager_default 0d667a0e48a280…
foo db Exited (0) 37 minutes ago e106c5cdbf5e foo_db_1 da2cb49d7a8d foo_default 5a87e93627b8f6…
foo backend Up 10 minutes 08a0873c0587 foo_backend_2 c316d5a335a5 80/tcp foo_default
foo frontend Up 10 minutes be723bf41aeb foo_frontend_1 c316d5a335a5 80/tcp foo_default
foo backend Up 10 minutes 5d91d4bcfcb3 foo_backend_1 c316d5a335a5 80/tcp foo_default
manager app Up 22 minutes 2ca4c0920807 manager_app_1 c316d5a335a5 80/tcp manager_default
manager app Up 22 minutes b2fa2b9724b0 manager_app_2 c316d5a335a5 80/tcp manager_default
loadbalancer app Exited (0) 37 minutes ago 791f4059b4af loadbalancer_app_1 c316d5a335a5 loadbalancer_default
如果您想查看所有容器而不考虑它们的状态,您可以将 --all
或简短的 -a
标志添加到 ls 命令,就像我在示例中所做的那样。否则,仅显示 运行 个容器。