Docker使用Prune命令清理none镜像

目录
  • none镜像的产生和困惑
  • 如何清理none对象
    • 修剪镜像
    • 清理无容器使用的镜像
    • 修剪容器
    • 修剪卷
    • 修剪网络
    • 修剪一切

none镜像的产生和困惑

我们偶尔会看到 none镜像(虚悬镜像),那是因为

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

如下所示

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

如何清理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

清理无容器使用的镜像

命令: docker image prune -a

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

$ docker image prune -a --filter "until=24h"

修剪容器

停止容器后不会自动删除这个容器,除非在启动容器的时候指定了 –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

默认情况下,系统会提示是否继续。要绕过提示,请使用 -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

修剪网络

Docker 网络不会占用太多磁盘空间,但是它们会创建 iptables 规则,桥接网络设备和路由表条目。要清理这些东西,可以使用 docker network prune 来清理没有被容器未使用的网络。

$ docker network prune

修剪一切

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

如果使用 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

到此这篇关于Docker使用Prune命令清理none镜像的文章就介绍到这了,更多相关Docker 清理none镜像 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • docker 如何删除none镜像

    删除none的镜像,要先删除镜像中的容器.要删除镜像中的容器,必须先停止容器. $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 168b258ceea3 34 seconds ago 460.6 MB <none> <none> b2c5d34941c6 23 minutes ago 588.7 MB tankzhang/es v1 85fc66558c37 13 days

  • 删除docker images中为none的镜像操作

    由于平时一直使用docker build 命令才生成一个镜像,有时候由于代码跟新频繁就会产生很多的none的image,最近想着清除一下. 于是就写了以下脚本: docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm docker images|grep non

  • 如何删除docker-register镜像及none无效镜像详解

    背景介绍 我们大家在服务器上搭建了docker registry,所有的构建镜像都会集中在一个服务器上,久而久之硬盘就被塞满了.本文会着重介绍两种清理方式.一是<none>标签的镜像,二是删除docker物理镜像.下面话不多说了,来一起看看详细的介绍吧. docker<none>镜像 有效的 none 镜像 为了理解 <none> 镜像,我们先要理解 Docker镜像系统的工作机制,以及 layers是如何组织起来的. 当我拉取一个stresser镜像的时候,运行 do

  • 详解docker强制批量删除none的image镜像

    说正题,今天遇到的问题是自己在开发机做坏了几个image镜像,删不了   我想大家也遇到过这样类似的问题  -. 他的名字和tag都是为none,空- 以前看过一个帖子说,给他标记一个tag,就可以干掉,瞎扯- [ruifengyun@bj-buzz-dev01 extractor_docker]$ [ruifengyun@bj-buzz-dev01 extractor_docker]$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL

  • Docker使用Prune命令清理none镜像

    目录 none镜像的产生和困惑 如何清理none对象 修剪镜像 清理无容器使用的镜像 修剪容器 修剪卷 修剪网络 修剪一切 none镜像的产生和困惑 我们偶尔会看到 none镜像(虚悬镜像),那是因为 构建镜像过程中因为脚本错误导致很多镜像构建终止,产生很多none标签的版本 手动构建镜像的时候没有进行提交,遗留来的垃圾镜像 这些镜像占据较大的存储空间,需要删除 如下所示 root@instance-o70no2nw:~# docker images -a REPOSITORY TAG IMAG

  • docker prune命令可定时清理不常用数据的实现

    目录 docker system df docker system prune 如何清理none对象 修剪镜像 清理无容器使用的镜像 修剪容器 修剪卷 修剪网络 修剪一切 场景:使用docker引擎服务时间久了,会发现磁盘空间越来越大,现在要删除关于docker相关不用的数据来释放磁盘空间 先看下docker system命令 docker system 目前拥有四个子命令,分别是: docker system df docker system events docker system info

  • IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署

    之前博客已经谈到配置docker远程链接服务,这里再介绍如何在IDEA中配置docker,将项目部署到服务器上 前文 Docker之开启远程访问的实现 idea2021激活教程 https://www.yuque.com/docs/share/b996d27e-c888-45f2-bb1e-f6db5efe2485?# https://www.jb51.net/article/178193.htm 去插件中心安装Docker插件,安装完重启IDEA.这个简单 配置连接远程docker,打开Doc

  • 基于Docker的几种常用CentOS7镜像小结

    目录 1 安装 Docker 2 配置国内镜像源 3 制作中文环境基础版Centos7镜像 3.1 Dockerfile 3.2 启动容器 3.3 在容器中安装配置一些基础服务 3.4 SSH 3.5 [可选]修改容器配置 3.5.1 通过容器的配置文件 3.5.2 通过 docker commit 方式 3.6 制作为本地镜像 3.7 镜像提交到阿里云镜像库 3.8 使用提交到阿里云的镜像 4 开发环境版 Centos7 镜像 4.1 JDK 4.2 Git 4.3 Maven 4.4 Ngi

  • Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数示例代码

    最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4.项目准备 5.编写 Dockerfile 6.发布项目 7.测试服务 环境准备 系统:Ubuntu 17.04 x64 Docker 17.12.0-ce IP:45.32.31.101 一.安装 Docker CE 国内不建议使用:"脚本进行安装",会下载安装很慢,使用步骤 1 安装,看下面的链接:常规安装方式 1.常规安装方式 Ubuntu 17.04 x64 安装

  • Docker Compose常用命令详解

    1.Docker compose的使用非常类似于docker命令的使用,但是需要注意的是大部分的compose命令都需要到docker-compose.yml文件所在的目录下才能执行. 2.compose以守护进程模式运行加-d选项 $ docker-compose up -d 3.查看有哪些服务,使用docker-compose ps命令,非常类似于 docker 的ps命令 4.查看compose日志 $ docker-compose logs web $ docker-compose lo

  • .NETCore Docker实现容器化与私有镜像仓库管理

    一.Docker介绍 Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技术,它隔离了应用程序对基础架构(操作系统等)的依赖.相较于虚拟机而言,Docker共享的是宿主机的硬件资源,使用容器来提供独立的运行环境来运行应用.虚拟机则是基于Supervisor(虚拟机管理程序)使用虚拟化技术来提供隔离的虚拟机,在虚拟机的操作系统上提供运行环境!虽然两者都提供了很好的资源隔离,但很明显Docker的虚拟化开销更低! Docker涉及了三个核心

  • Docker仓库常用命令详解

    登录 docker login 通过执行docker login命令来输入用户名.密码和邮箱来完成注册和登录.注册成功后,本地用户目录的.dockercfg中将保存着用户认证的信息. 从仓库拉取镜像 docker pull [镜像名] 搜索镜像 docker search [想要搜索的镜像名] 例如: C:\Users\kunta>docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official

  • 分享8个基本的Docker容器管理命令

    前言: 在这篇文章中,我们将带你学习 8 个基本的 Docker 容器命令,它们操控着 Docker 容器的基本活动,例如 运行run. 列举list. 停止stop. 查看历史纪录logs. 删除delete 等等.文末福利! 利用这 8 个命令可以学习 Docker 容器的基本管理方式.这是一个为 Docker 初学者准备的,带有示范命令输出的指南. 在这篇文章中,我们将带你学习 8 个基本的 Docker 容器命令,它们操控着 Docker 容器的基本活动,例如 运行run. 列举list

  • docker 使用mysqldump命令备份导出项目中的mysql数据

    mysqldump命令 介绍:一个数据库备份程序 格式:mysqldump [options] [db_name [tbl_name ...]]描述:mysqldump客户端实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据.它转储一个或多个MySQL数据库以备份或传输到另一个SQL服务器. mysqldump命令还可以生成CSV,其他分隔文本或XML格式的输出. 下图为镜像重命名后的镜像名为uoj,现在要把这个镜像中的mysql导出 运行如下命令: do

随机推荐