zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    Java基础——clone()方法浅析
    Unity shader error: “Too many texture interpolators would be used for ForwardBase pass”
    ar 解压一个.a文件报错: xxx.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
    How to set up "lldb_codesign" certificate!
    Unity-iPhone has Conflicting Provisioning Settings
    ETC1/DXT1 compressed textures are not supported when publishing to iPhone
    Xcode 提交APP时遇到 “has one iOS Distribution certificate but its private key is not installed”
    XCode iOS之应用程序标题本地化
    苹果电脑(Mac mini或Macbook或iMac)恢复出厂设置
    Unity 4.7 导出工程在XCode10.1上编译报错
  • 原文地址:https://www.cnblogs.com/y593216/p/14716577.html
Copyright © 2011-2022 走看看