Bash:从docker-compose.yml获取容器名称列表

用户名

我将我的容器分散到多个docker-compose.yml文件中(https://docs.docker.com/compose/extends/)。它们根据项目是分开的,但是所有项目都使用几个容器。我有一个简洁的shell脚本,可以让我轻松地一次启动几个项目:

./myscript.sh up project1 project2

执行:

docker-compose up -d -f shared/docker-compose.yml -f project1/docker-compose.yml -f project2/docker-compose.yml project1 project2

这将启动容器project1project2和在定义的几个共享撰写文件,例如shared-dbshared-apache

现在,我想在外壳脚本中添加杀死容器的选项:

./myscript.sh kill

应该执行:

docker kill project1 project2 shared-db shared-apache

问题是获取我的容器列表。我当前的方法是使用docker ps --format '{{.Names}}',这并不理想,因为它还会列出不属于这些项目的容器。

我也尝试过使用docker-compose kill,它需要分别为每个docker-compose.yml文件执行我遍历了所有文件,它对第一个文件有效,但对第二个文件抛出错误:

ERROR: Service 'project1' depends on service 'shared-db' which is undefined.

引发错误是因为project1/docker-compose.yml具有依赖关系,shared/docker-compose.yml并且由于shared已被杀死而无法满足

想到的唯一方法就是以某种方式遍历所有docker-compose.yml文件并获得在那里定义的所有容器名称的列表,但是我没有找到任何适当的方法来解析ymlbash中的文件。

services:
  db:
    image: ...
    container_name: shared-db

  apache:
    image: ...
    container_name: shared-apache

从以上的内容中yml,我必须得到名字shared-db名字shared-apache

卡米尔库克

只需使用docker-compose kill

docker-compose -f shared/docker-compose.yml -f project1/docker-compose.yml -f project2/docker-compose.yml kill

该选项-f应位于之前的命令之前docker-compose,这样它将被解析为包含文件。您可以通过docker-compose这种方式使用所有可能的命令。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从主机解析docker-compose容器名称

来自分类Dev

容器名称的Docker-Compose问题

来自分类Dev

Docker-compose:在其他容器内获取链接的容器地址(以bash表示)

来自分类Dev

如何在docker-compose.yml中设置/获取项目名称

来自分类Dev

如何在docker-compose.yml中设置/获取项目名称

来自分类Dev

了解 docker-compose.yml 中容器的主机名

来自分类Dev

Docker Compose循环容器链接

来自分类Dev

docker-compose +外部容器

来自分类Dev

Docker-compose 链接容器

来自分类Dev

Docker Compose-映像名称

来自分类Dev

Docker:Dockerfile与docker-compose.yml

来自分类Dev

Docker:Dockerfile与docker-compose.yml

来自分类Dev

将数组从.env传递到docker-compose.yml到Dockerfile到bash脚本

来自分类Dev

Docker Compose Bash命令在YAML中不起作用,但在容器中起作用

来自分类Dev

不同的环境文件,但与Docker Compose相同的yml?

来自分类Dev

在docker-compose.yml中运行命令

来自分类Dev

如何创建docker-compose.yml文件

来自分类Dev

Docker-compose.yml配置问题

来自分类Dev

docker-compose.yml 路径中的空间

来自分类Dev

使用docker-compose设置容器时区

来自分类常见问题

在docker compose中更改容器端口

来自分类Dev

docker-compose up容器开始订购

来自分类Dev

通过docker-compose重新使用容器

来自分类Dev

docker compose的问题:找不到容器命令

来自分类Dev

在docker compose中更改容器端口

来自分类Dev

将容器与docker-compose链接

来自分类Dev

Docker Compose无法正确设置容器链接

来自分类Dev

使用Docker Compose创建多个容器

来自分类Dev

与 docker compose 开始的 redis 容器交互