有一次它说
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镜像列表。如果它没有在运行命令的同一目录中找到一个撰写文件,它就不会返回所有正在运行的容器,这有点令人惊讶。
答案 0 :(得分:4)
docker-compose
是基于项目的。它需要当前目录或任何父目录中的docker-compose.yml
文件。它只会显示与当前适用的docker-compose.yml
相关的服务。如果要查看正在运行的所有内容,请使用docker ps
和docker exec
来运行命令。但是如果你想在docker-compose
项目中进行,那么你当前的目录很重要,请尝试将其保存为docker-compose.yml
直接存在于同一目录中的目录