docker定时删除过期镜像

avatar 2020年11月6日18:09:04 2 5,551 次浏览

在docker使用的过程中,来回的拉取镜像,如果不定期删除导致本地的磁盘空间会越来越大,占用更多的空间资源。这里写一下定期清理一些不需要的镜像,在镜像的使用过程中我们使用docker images能够查看当前节点上的所有镜像资源,还有镜像创建的时间。我们可以根据时间来删除不需要的镜像。看下面的镜像显示内容:

[root@wulaoer ~]# docker images
REPOSITORY      TAG                          IMAGE ID            CREATED             SIZE
wulaoer         78                           05c692e1e2ad        3 hours ago         1.13GB
wulaoer1        90                           f0391fdb559f        6 hours ago         1.15GB
wulaoer2        49                           aeabd7428461        9 hours ago         151MB
wulaoer3        812                          4a614b0d0410        9 hours ago         1.16GB

我们根据时间删除,也就是第四列的创建时间,小时时hours,天是day,周时weeks,月是months,这里就筛选一下。

[root@wulaoer ~]# docker images | grep weeks | awk '{print $3}'|xargs docker rmi

这样就可以把镜像中一周之前的所有镜像删除,但是超过一个月的镜像无法删除,需要循环周,月才能把一个星期之前的所有的日志删除,这样如果是k8s集群,批量执行比较好一点,或者做个定时任务等。以后就不需要因为镜像的问题而考虑镜像占用资源了,我们可以写一个sh脚本,用来删除这些镜像。

for i in {"weeks","months"};
    docker images | grep $i | awk '{print $3}'|xargs docker rmi
    docker images | grep $i | awk '{print $1}'|xargs docker rmi
;done

这里可以根据镜像的名称或者镜像的ID删除镜像,这样能够在使用镜像名称无法删除的时候,可以使用镜像的ID删除,相当于多了一个保障。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  1   博主  1

    • avatar zhangsan 4

      #!/bin/sh
      # clear weeks docker images

      # 临时加载环境变量
      source /etc/profile

      DATE_SEARCH=”weeks months”
      for i in $DATE_SEARCH; do
      docker images | grep $i | awk ‘{print $3}’ | xargs docker rmi
      done

        • avatar 吴老二 Admin

          @zhangsan 你这是写到环境变量里了吧,怎么还有一个source /etc/profile