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]