• docker的容器和镜像的清理


    docker的容器和镜像的清理

    Docker用户会在使用docker一段时间后发现宿主机的磁盘很容易就快被占满,并且手动docker rmi [imgName]似乎并不能释放磁盘,貌似想删掉的镜像依然在宿主机中,下面针对这一问题提出一些解决方案。

    Docker空间占用查看

    1.13版本后Docker提供给了一些System命令,例如df命令查看Docker占用分布:

    $ docker system df
    TYPE                TOTAL     ACTIVE    SIZE          RECLAIMABLE
    Images              3         0         5.373GB       5.373GB (100%)
    Containers          0         0         0B            0B
    Local Volumes       0         0         0B            0B
    
    $ docker system df -v 命令可以进一步查看空间占用细节,以确定是哪个镜像、容器或本地卷占用过高空间

    清理方法

    1 自动清理命令

    docker system prune可对空间进行自动清理。
    该命令所清理的对象如下:

    已停止的容器
    未被任何容器使用的卷
    未被任何容器所关联的网络
    所有悬空的镜像

    对于上面提到的一些镜像或容器的状态,需要我们心里有点数:

    已使用的镜像:指所有已被容器(包括stop的)关联的镜像,也就是docker ps -a所看到的所有容器对应的image。
    未引用镜像:没有被分配或使用在容器中的镜像
    悬空镜像(dangling image):未配置任何Tag(也就是无法被引用)的镜像。通常是由于镜像编译过程中未指定-t参数配置Tag导致的。

    docker system prune后可以加额外的参数,如:
    docker system prune -a : 一并清除所有未被使用的镜像和悬空镜像。
    docker system prune -f : 用以强制删除,不提示信息。

    另外除了system级别的,还有针对容器或是镜像级别的删除命令:

    docker image prune:删除悬空的镜像。
    
    docker container prune:删除无用的容器。
          --默认情况下docker container prune命令会清理掉所有处于stopped状态的容器
          --如果不想那么残忍统统都删掉,也可以使用--filter标志来筛选出不希望被清理掉的容器。例子:清除掉所有停掉的容器,但24内创建的除外:
          --$ docker container prune --filter "until=24h"  
    
    docker volume prune:删除无用的卷。
    docker network prune:删除无用的网络
    

    手动清除

    对于悬空镜像和未使用镜像可以使用手动进行个别删除:
    1、删除所有悬空镜像,不删除未使用镜像:
    docker rmi $(docker images -f "dangling=true" -q)


    2、删除所有未使用镜像和悬空镜像
    docker rmi $(docker images -q)


    3、清理卷
    如果卷占用空间过高,可以清除一些不使用的卷,包括一些未被任何容器调用的卷(-v 详细信息中若显示 LINKS = 0,则是未被调用):
    删除所有未被容器引用的卷:
    docker volume rm $(docker volume ls -qf dangling=true)


    4、容器清理
    如果发现是容器占用过高的空间,可以手动删除一些:
    删除所有已退出的容器:
    docker rm -v $(docker ps -aq -f status=exited)
    删除所有状态为dead的容器
    docker rm -v $(docker ps -aq -f status=dead)

  • 相关阅读:
    Centos系统修改时间临时和永久生效
    Oracle数据泵恢复用户数据实例
    Oracle修改用户密码错误次数及解锁用户
    MongoDB的启动与停止
    pip常用命令
    mysql执行拉链表操作
    Python实现人脸识别
    Mysql触发器学习
    WordCount程序
    Java学习--多态
  • 原文地址:https://www.cnblogs.com/y593216/p/14716577.html
Copyright © 2020-2023  润新知