jco*_*lum 4 docker docker-compose
有一次它说
docker-compose run 命令允许您为您的服务运行一次性命令。例如,要查看哪些环境变量可用于 Web 服务:
$ docker-compose 运行网络环境
当我第一次运行它时,我的第二个 bash 终端在不同的目录中打开:
$ docker-compose run web env
ERROR: No such service: web
Run Code Online (Sandbox Code Playgroud)
奇怪,所以我跑了
$ docker-compose ps
Name Command State Ports
------------------------------
Run Code Online (Sandbox Code Playgroud)
我很困惑。所以我在另一个窗口中运行了命令:
? 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
Run Code Online (Sandbox Code Playgroud)
好的。有什么不同?哦,目录。
我不明白的是:为什么?不是docker-compose ps与服务交谈以找出谁在运行吗?显然不是。那么这里发生了什么?最好的猜测是 docker 正在读取 compose 文件,然后使用服务的名称等来过滤正在运行的 docker 镜像列表。如果在运行命令的同一目录中没有找到 compose 文件,它就不会返回所有正在运行的容器,这有点令人惊讶。
docker-compose是基于项目的。它需要docker-compose.yml当前目录或任何父目录中的文件。它只会显示与当前适用的服务相关的服务docker-compose.yml。如果您想查看正在运行的所有内容docker ps并docker exec用于运行命令。但是,如果您想在docker-compose项目中执行此操作,那么您的当前目录很重要,请尝试将其保留为docker-compose.yml直接存在于同一目录中的目录
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |