【问题标题】:Why does docker-compose ps not run correctly in a different directory?为什么 docker-compose ps 在不同的目录中不能正确运行?
【发布时间】:2017-11-12 20:54:25
【问题描述】:

跑通docker-compose walkthrough.

在某一时刻它说

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 psdocker exec 运行命令。但是如果你想在 docker-compose 项目中执行此操作,那么你的当前目录很重要,请尝试将其保留为 docker-compose.yml 直接存在于同一目录中的目录
  • @TarunLalwani 这应该是一个答案。

标签: docker docker-compose


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多