停止名称与模式匹配的Docker容器

时间:2019-07-11 23:26:02

标签: docker

我将puckel/docker-airflowCeleryExecutor一起使用。它总共启动了5个像这样的容器

docker-airflow_flower_1_de2035f778e6
docker-airflow_redis_1_49d2e710e82b
..

在开发时,我经常不得不停止上述所有容器。但是,我无法执行docker stop $(docker ps -aq),因为我的计算机上也运行了其他容器。

有没有一种方法可以停止所有名称与给定模式匹配的容器(例如,所有名称以docker-airflow开头的容器)?

2 个答案:

答案 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上)