为什么docker compose ps不能在不同的目录中正确运行?
穿过 在某一点上,它说 docker compose run命令允许您为以下对象运行一次性命令: 您的服务。例如,查看环境变量是什么 可用于web服务: $docker编写运行web环境 当我第一次运行此命令时,我的第二个bash终端在另一个目录中打开:为什么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 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这应该是一个答案。