清除docker无用镜像

Posted done58

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清除docker无用镜像相关的知识,希望对你有一定的参考价值。

k8s环境运行久了,镜像会一直在电脑上,会出现磁盘空间不足,需要定期清理过期没有使用的镜像。

清除docker无用镜像
一、查看 docker 占用的资源
在进行资源清理之前我们有必要搞清楚 docker 都占用了哪些系统的资源。这需要综合使用不同的命令来完成。

docker container ls:默认只列出正在运行的容器,-a 选项会列出包括停止的所有容器。

docker image ls:列出镜像信息,-a 选项会列出 intermediate 镜像(就是其它镜像依赖的层)。

docker volume ls:列出数据卷。

docker network ls:列出 network。

docker info:显示系统级别的信息,比如容器和镜像的数量等。

通过这些命令查看 docker 使用的资源情况后,相信你已经决定要清理 docker 占用的一些资源了!让我们先从那些未被使用的资源开始。

查看镜像

按名称排序
docker images | sort -k7 -h
docker images |grep none  会发现有好多无用镜像

二、只删除那些未被使用的资源
Docker 提供了方便的 docker system prune 命令来删除那些已停止的容器、dangling 镜像、未被容器引用的 network 和构建过程中的 cache:

$ docker system prune

使用以下命令清理已经停止运行的docker容器 

docker rm $(docker ps --all -q -f status=exited)

1、通过标签删除镜像
通过如下两个都可以删除镜像:

docker rmi [image]

或者:

docker image rm  [image]

支持的子命令如下:

-f, -force: 强制删除镜像,即便有容器引用该镜像;
-no-prune: 不要删除未带标签的父镜像;
2、通过 ID 删除镜像
除了通过标签名称来删除镜像,我们还可以通过制定镜像 ID, 来删除镜像,如:

docker rmi ID

一旦制定了通过 ID 来删除镜像,它会先尝试删除所有指向该镜像的标签,然后在删除镜像本身。

3、删除镜像的限制
先删除引用这个镜像的容器;
再删除这个镜像;
也就是,根据上图中提示的,引用该镜像的容器 ID, 执行删除命令:

docker rm  ID

然后,再执行删除镜像的命令:

docker rmi ID

4、清理镜像
我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理:

docker image prune

它支持的子命令有:

-a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;
-f, --force:强制删除镜像文件,无需弹出提示确认;

以上是关于清除docker无用镜像的主要内容,如果未能解决你的问题,请参考以下文章

Sonatype Nexus Repository Manager清除无用的docker镜像

清除k8s中node节点无用的镜像

docker 常用命令

docker 清理无用容器或者镜像

docker容器镜像等相关文件目录迁移

使用 Docker 开发 - 使用多阶段构建镜像