• Docker 清理none镜像 Prune命令


    none镜像的产生和困惑
    我们偶尔会看到 none镜像(虚悬镜像),那是因为

    构建镜像过程中因为脚本错误导致很多镜像构建终止,产生很多none标签的版本
    手动构建镜像的时候没有进行提交,遗留来的垃圾镜像
    这些镜像占据较大的存储空间,需要删除
    如下所示

    root@instance-o70no2nw:~# docker images -a
    REPOSITORY TAG IMAGE ID CREATED SIZE
    <none> <none> 867c2dc0031b 12 hours ago 465MB
    mytomcat 8.5.0 34c8c864d046 12 hours ago 465MB
    ubuntu 16.04 a3551444fc85 2 days ago 119MB
    mysql 8.0.16 d72169616e20 4 days ago 443MB
    mysql latest d72169616e20 4 days ago 443MB
    tomcat latest 5a069ba3df4d 2 weeks ago 465MB
    1
    2
    3
    4
    5
    6
    7
    8
    如何清理none对象
    Docker 采用保守的方法来清理未使用的对象(通常称为“垃圾回收”),例如镜像、容器、卷和网络:
    除非明确要求 Docker 这样做,否则通常不会删除这些对象。这可能会导致 Docker 使用额外的磁盘空间。
    对于每种类型的对象,Docker 都提供了一条 prune 命令。
    另外,可以使用 docker system prune一次清理多种类型的对象。本主题讲解如何使用这些 prune 修剪命令

    修剪镜像
    清理none镜像(虚悬镜像)
    命令: docker image prune
    默认情况下,docker image prune 命令只会清理 虚无镜像(没被标记且没被其它任何镜像引用的镜像)

    root@instance-o70no2nw:~# docker image prune
    WARNING! This will remove all dangling images.
    Are you sure you want to continue? [y/N] y
    Total reclaimed space: 0B
    1
    2
    3
    4
    清理无容器使用的镜像
    命令: docker image prune -a

    默认情况下,系统会提示是否继续。要绕过提示,请使用 -f 或 --force 标志。
    可以使用 --filter 标志使用过滤表达式来限制修剪哪些镜像。例如,只考虑 24 小时前创建的镜像:

    $ docker image prune -a --filter "until=24h"
    1
    修剪容器
    停止容器后不会自动删除这个容器,除非在启动容器的时候指定了 –rm 标志。使用 docker ps -a 命令查看 Docker 主机上包含停止的容器在内的所有容器。你可能会对存在这么多容器感到惊讶,尤其是在开发环境。停止状态的容器的可写层仍然占用磁盘空间。要清理掉这些,可以使用 docker container prune 命令:

    $ docker container prune

    WARNING! This will remove all stopped containers.
    Are you sure you want to continue? [y/N] y
    1
    2
    3
    4
    默认情况下,系统会提示是否继续。要绕过提示,请使用 -f 或 --force 标志。

    默认情况下,所有停止状态的容器会被删除。可以使用 --filter 标志来限制范围。例如,下面的命令只会删除 24 小时之前创建的停止状态的容器:

    修剪卷
    卷可以被一个或多个容器使用,并占用 Docker 主机上的空间。卷永远不会被自动删除,因为这么做会破坏数据。

    $ docker volume prune

    WARNING! This will remove all volumes not used by at least one container.
    Are you sure you want to continue? [y/N] y
    1
    2
    3
    4
    修剪网络
    Docker 网络不会占用太多磁盘空间,但是它们会创建 iptables 规则,桥接网络设备和路由表条目。要清理这些东西,可以使用 docker network prune 来清理没有被容器未使用的网络。

    $ docker network prune
    1
    修剪一切
    docker system prune 命令是修剪镜像、容器和网络的快捷方式。在 Docker 17.06.0 及以前版本中,还好修剪卷。在 Docker 17.06.1 及更高版本中必须为 docker system prune 命令明确指定 --volumes 标志才会修剪卷。

    $ docker system prune

    WARNING! This will remove:
    - all stopped containers
    - all networks not used by at least one container
    - all dangling images
    - all build cache
    Are you sure you want to continue? [y/N] y
    1
    2
    3
    4
    5
    6
    7
    8
    如果使用 Docker 17.06.1 或更高版本,同时也想修剪卷,使用 --volumes 标志。

    $ docker system prune --volumes

    WARNING! This will remove:
    - all stopped containers
    - all networks not used by at least one container
    - all volumes not used by at least one container
    - all dangling images
    - all build cache
    Are you sure you want to continue? [y/N] y
    1
    2
    3
    4
    5
    6
    7
    8
    9

    ————————————————
    版权声明:本文为CSDN博主「Kerry的天空」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/gxf212/article/details/89676307

  • 相关阅读:
    团队与领导力健康检查 | 体检表
    如何改变组织文化
    如何在各种文化背景下成功敏捷
    OKR痛点与误区 | 敏捷家分享007
    Scrum培训感想
    如何讲好故事
    Lc70_爬楼梯
    Lc641_设计循环双端队列
    Lc32_最长有效括号
    Lc239_滑动窗口最大值
  • 原文地址:https://www.cnblogs.com/ExMan/p/15850387.html
Copyright © 2020-2023  润新知