如何将 docker ps 输出传送到 docker stop 命令?

问题描述 投票:0回答:3

我想停止所有名称中带有

dev1102
的容器。有几个容器,但我不知道有多少。所以我运行
docker ps |grep -o 'dev1102_[A-Za-z\_]*'
它列出了我需要的所有容器。输出看起来像这样

dev1102_abc_de
dev1102_admin
dev1102_app_qqq

如何将此输出传输到 docker stop 命令中,以便 grep 中列出的所有容器都停止? 我尝试了

docker stop < docker ps |grep -o 'dev1102_[A-Za-z\_]*'
但这会导致 bash 错误:

-bash: docker: No such file or directory

bash docker grep
3个回答
1
投票

docker stop $(docker ps | grep -o 'dev1102_[A-Za-z\_]*')

应该完成这项工作!


1
投票

另一种方法是使用

docker ps | grep -o 'dev1102_[A-Za-z\_]*'
docker stop
的输出传递给
xargs
命令,如下所示:

docker ps | grep -o 'dev1102_[A-Za-z\_]*' | xargs -I {} docker stop {}

这里

xargs -I {} docker stop {}
占位符
{}
被每个容器名称替换。


0
投票

我建议使用 Docker 1.13 中引入的重组的新语法 Docker CLI 命令。例如。将

docker container ls
filter
标志一起使用,它更干净且更具可读性:

docker stop $(docker container ls --all --quiet --filter "name=^dev1102_[A-Za-z\_]*")
© www.soinside.com 2019 - 2024. All rights reserved.