为什么docker-compose ps在其他目录中无法正常运行?

时间:2017-11-09 19:00:35

标签: docker docker-compose

浏览docker-compose walkthrough.

有一次它说

  

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

     

$ docker-compose run web env

当我第一次运行时,我的第二个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镜像列表。如果它没有在运行命令的同一目录中找到一个撰写文件,它就不会返回所有正在运行的容器,这有点令人惊讶。

1 个答案:

答案 0 :(得分:4)

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