docker - 如何批量删除特定正在运行的 docker 容器
问题描述
我需要同时运行 70 多个 docker 容器。稍后,需要停止这些容器。
目前,我可以docker stop
使用 shell 命令将它们全部使用docker stop $(docker ps -f since=<last docker before>)
。它工作正常,但是如果在我之后启动了任何容器,我就会遇到问题,因为上面的代码也会停止它们。
有什么方法可以通过某种特定搜索关闭所有正在运行的容器?
我知道有一个docker ps -f label=<some label>
,但我还没有弄清楚如何使用它。
解决方案
如果您同时启动多个容器,请使用
docker run --label=anyname other-docker-args-of-yours image:tag
当你想删除所有容器时
docker stop $(docker ps -f label=anyname | awk 'NR>1 {print$1}')
where是您在命令
anyname
期间提供的标签名称,忽略列标题并仅打印值。docker run
awk 'NR>1 {print$1}'
CONTAINER_ID
Edit-1:
我后来意识到你也可以实现 Container_ID 的列表awk
。我会考虑使用下面的行。
docker stop `docker ps -qaf label=anyname`
如果您还想删除所有停止的容器,请包含a
在选项中,例如代替-qf
use -qaf
。
-q
单独打印容器 ID。
-a
对于所有容器,包括已停止。
推荐阅读
- docker - Docker Drupal 8:错误:找不到指定的 Dockerfile:Dockerfile
- python - 如何将机器人框架测试结果集成到 Kibana
- angular - 升级到 Angular 9 - @angular/flex-layout peer 依赖于 @angular/cdk
- javascript - 如何在 next.js 中设置端口
- c# - 在连接字段上搜索时,实体框架查询速度很慢
- csv - 在 Dynamics 365 中导入数据时,带有特殊字符的字符串值正在修剪
- c# - 在数组中查找最长的时间
- .net - .Net 获取字典列表中最常见的值
- c# - 创建一个按主键排序而不指定模型类型的选择 LINQ 查询
- java - 如何分析生成的异常数量,按异常类或代码行分类