Docker:清除所有已停止的容器,仅限数据容器

什么是Docker的方式来清理所有停止的Docker容器,但保留数据容器?

  • docker rm $(docker ps -qa -f status=exited)删除这些!

如何清理相应的图像?

一般来说,没有确切的方法来区分data-only其他容器。 如果你希望他们能够在清洗过程中生存下来,那么你可以devise一个特定的名称scheme,并且使用更复杂的脚本,这些脚本不会将容器从名称开始,例如从data-开始。

遵循Mykolas的build议,我引入了一个命名约定,要求所有只有数据的容器都加上-data后缀。

删除所有已停止的容器,除了那些名为*-data容器:

 docker ps -a -f status=exited | grep -v '\-data *$'| awk '{if(NR>1) print $1}' | xargs -r docker rm 

之后要删除所有未使用的图像:

 docker rmi $(docker images -qa -f dangling=true) 

(仅保留数据容器使用的图像)

可能是你可以,在docker run命令的所有数据专用容器中添加a -e "type=data-only" ,然后根据这个条件筛选,或者用grep或者用docker inspect例子,我启动一个容器与sudo docker run -it -e type=data-only ubuntu bash root@f7e9ea4efbd9:/#然后sudo docker inspect -f "{{ .Config.Env }}" f7e显示[type=data-only PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]