我想停止所有名称中带有
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
docker stop $(docker ps | grep -o 'dev1102_[A-Za-z\_]*')
应该完成这项工作!
另一种方法是使用
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 {}
占位符 {}
被每个容器名称替换。
我建议使用 Docker 1.13 中引入的重组的新语法 Docker CLI 命令。例如。将
docker container ls
与 filter
标志一起使用,它更干净且更具可读性:
docker stop $(docker container ls --all --quiet --filter "name=^dev1102_[A-Za-z\_]*")