我将puckel/docker-airflow
与CeleryExecutor
一起使用。它总共启动了5个像这样的容器
docker-airflow_flower_1_de2035f778e6
docker-airflow_redis_1_49d2e710e82b
..
在开发时,我经常不得不停止上述所有容器。但是,我无法执行docker stop $(docker ps -aq)
,因为我的计算机上也运行了其他容器。
有没有一种方法可以停止所有名称与给定模式匹配的容器(例如,所有名称以docker-airflow
开头的容器)?
答案 0 :(得分:3)
迟到总比不到好;)。来自 this 文章。以下对我有用:
停止名称与给定模式匹配的容器:
$ docker container stop $(docker container ls -q --filter name=<pattern>)
另一方面,如果我们想启动名称匹配给定模式的容器:
$ docker container start $(docker container ls --all -q --filter name=<pattern>)
注意:对于不同环境相关的提示,@y2k-shubham 的更新是一个很好的起点。
答案 1 :(得分:2)
根据@james-coyle的这篇文章,以下命令对我有用
docker ps --filter name=docker-airflow* --filter status=running -aq | xargs docker stop
我相信docker CLI
本身不提供这样的功能,因此我们必须依靠过滤器和古老的bash
PIPE and xargs
UPDATE-1
请注意,根据您的环境,您可能必须执行这些操作
sudo
运行docker命令(只需在上面的docker ..
命令前面加上sudo
前缀)--filter name="docker-airflow*"
括起来(尤其是在zsh
上)