为什么docker compose ps不能在不同的目录中正确运行?

为什么docker compose ps不能在不同的目录中正确运行?,docker,docker-compose,Docker,Docker Compose,穿过 在某一点上,它说 docker compose run命令允许您为以下对象运行一次性命令: 您的服务。例如,查看环境变量是什么 可用于web服务: $docker编写运行web环境 当我第一次运行此命令时,我的第二个bash终端在另一个目录中打开: $ docker-compose run web env ERROR: No such service: web 奇怪,所以我跑了 $ docker-compose ps Name Command State Ports ----

穿过

在某一点上,它说

docker compose run命令允许您为以下对象运行一次性命令: 您的服务。例如,查看环境变量是什么 可用于web服务:

$docker编写运行web环境

当我第一次运行此命令时,我的第二个bash终端在另一个目录中打开:

$ docker-compose run web env
ERROR: No such service: web
奇怪,所以我跑了

$ docker-compose ps
Name   Command   State   Ports
------------------------------
我很困惑。因此,我在另一个窗口中运行了命令:

✗ docker-compose ps
       Name                      Command               State           Ports         
-------------------------------------------------------------------------------------
composetest_redis_1   docker-entrypoint.sh redis ...   Up      6379/tcp              
composetest_web_1     python app.py                    Up      0.0.0.0:5000->5000/tcp
嗯。有什么区别?哦,目录


我不明白的是:为什么?docker compose ps不是在和一个服务交谈,以确定谁在运行吗?显然不是。那么这里发生了什么?最好的猜测是docker正在读取compose文件,然后使用服务的名称等过滤正在运行的docker映像列表。如果它没有在运行命令的同一目录中找到compose文件,它就不会返回所有正在运行的容器,这有点令人惊讶

docker compose
是基于项目的。它需要当前目录或任何父目录中的
docker compose.yml
文件。它将仅显示与当前适用的
docker compose.yml
相关的服务。如果要查看正在运行的所有内容,请使用
docker ps
docker exec
来运行命令。但是,如果您想在
docker compose
项目中执行此操作,那么您当前的目录很重要,请尝试将其保留为
docker compose.yml
direct位于同一目录中的目录

docker compose
基于项目。它需要当前目录或任何父目录中的
docker compose.yml
文件。它将仅显示与当前适用的
docker compose.yml
相关的服务。如果要查看正在运行的所有内容,请使用
docker ps
docker exec
来运行命令。但是如果您想在
docker compose
项目中执行此操作,那么当前目录很重要,请尝试将其保留为
docker compose.yml
direct所在目录directory@TarunLalwani这应该是一个答案。