【发布时间】:2017-11-12 20:54:25
【问题描述】:
在某一时刻它说
docker-compose run 命令允许您运行一次性命令 您的服务。例如,查看环境变量是什么 可用于网络服务:
$ docker-compose 运行网络环境
当我第一次运行这个时,我的第二个 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直接存在于同一目录中的目录 -
@TarunLalwani 这应该是一个答案。
标签: docker docker-compose