一、实现基础
首先认识两个选项,-q 和 -f
语法:docker ps/images [OPTIONS]
二、实现过程
样例1:显示所有容器的ID
# docker ps -aq
157209f40041
36de78881507
f84a622c67a4
3565f4c1690b
c0278ae2a869
......
样例2:在所有容器中,过滤出状态是“exited”
# docker ps -a -f status=exited
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
157209f40041 96047edc008f "/usr/local/bin/flex…" About a minute ago Exited (0) About a minute ago ...
36de78881507 c71c24a0b1a2 "/install-cni.sh" About a minute ago Exited (0) About a minute ago ...
f84a622c67a4 c71c24a0b1a2 "/opt/cni/bin/calico…" About a minute ago Exited (0) About a minute ago ...
样例3:综合运用“条件过滤”和“仅输出ID”
# docker ps -a -q -f status=exited
157209f40041
36de78881507
f84a622c67a4
样例4:将符合条件的ID作为参数传入
# docker rm $(docker ps -a -q -f status=exited)
157209f40041
36de78881507
f84a622c67a4
三、综合运用
思路总结如上述,接下来列举一些常见批量化组合操作:
列出所有的容器 IDdocker ps -aq
停止所有的容器docker stop $(docker ps -aq)
删除所有的容器
docker rm $(docker ps -aq)
删除“已退出”的容器
docker rm $(docker ps -q -f status=exited)
四、其它实现方式(prune)
# docker image prune --help
Usage: docker image prune [OPTIONS]
Remove unused images
Options:
-a, --all Remove all unused images, not just dangling ones
--filter filter Provide filter values (e.g. 'until=<timestamp>')
-f, --force Do not prompt for confirmation
移除未使用的镜像
# docker container prune --help
Usage: docker container prune [OPTIONS]
Remove all stopped containers
Options:
--filter filter Provide filter values (e.g. 'until=<timestamp>')
-f, --force Do not prompt for confirmation
同理,容器方面是移除所有已停止的
五、其它实现方式(grep)
过滤符合条件的容器,并截取ID
docker ps | grep 'PATTERN' | awk '{print $1}'
过滤符合条件的镜像,并截取ID
docker images | grep 'PATTERN' | awk '{print $3}'
六、镜像批量化归档,shell实现
#!/bin/bash
七、归档文件批量导出为镜像,shell实现
#!/bin/bash