为什么docker-compose ps在其他目录下不能正确运行?

穿过docker – 组成漫游。

有一点说

docker-compose run命令允许您为您的服务运行一次性命令。 例如,要查看哪些环境variables可用于Web服务:

$ docker-compose运行web env

当我第一次跑这个我的第二个bashterminal打开在不同的目录中:

$ 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正在阅读撰写文件,然后使用服务的名称等来过滤正在运行的docker图像的列表。 如果它没有在运行该命令的同一目录下find一个组合文件,它将不会返回所有正在运行的容器,

docker-compose是基于项目的。 它需要在当前目录或任何父目录中的docker-compose.yml文件。 它只会显示与当前适用docker-compose.yml相关的服务。 如果您想查看正在运行的所有内容,请使用docker psdocker exec来运行命令。 但是如果你想在一个docker-compose项目中做,那么你的当前目录很重要,试着将其保存为docker-compose.yml直接存在于同一目录中的那个目录