0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Docker占用资源过高,如何快速清理Docker?

阿铭linux 来源:电子发烧友网 作者:工程师谭军 2018-07-06 10:05 次阅读

docker 减肥记

如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用。

如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无用的镜像、容器、网络和数据卷…

1

查看 docker 占用的资源

在进行资源清理之前我们有必要搞清楚 docker 都占用了哪些系统的资源。

这需要综合使用不同的命令来完成。

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

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

docker volume ls:列出数据卷。

docker network ls:列出 network。

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

通过这些命令查看 docker 使用的资源情况后,

相信你已经决定要清理 docker 占用的一些资源了!

2

让我们先从那些未被使用的资源开始。

只删除那些未被使用的资源

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

$ docker system prune

安全起见,这个命令默认不会删除那些未被任何容器引用的数据卷,如果需要同时删除这些数据卷,你需要显式的指定 --volumns 参数。比如你可能想要执行下面的命令:

$ docker system prune --all --force --volumns

这次不仅会删除数据卷,而且连确认的过程都没有了!

注意使用 --all 参数后会删除所有未被引用的镜像而不仅仅是 dangling 镜像。

这里有必要解释一下何为 dangling images,其实可以简单的理解为未被任何镜像引用的镜像。比如在你重新构建了镜像后,那些之前构建的且不再被引用的镜像层就变成了 dangling images:

Docker占用资源过高,如何快速清理Docker?

在本地的镜像更新之后,就会出现类似图中红框内的 镜像。这表示旧的镜像已经不再被引用了,此时它们就变成了 dangling images。如果使用 -a 参数,你还会发现另外一种类型的 镜像,它们的 repository 和 tag 列都表现为

Docker占用资源过高,如何快速清理Docker?

这些镜像被称为 intermediate 镜像(就是其它镜像依赖的层)。

我们还可在不同在子命令下执行 prune,这样删除的就是某类资源:

docker container prune #删除所有退出状态的容器

docker volume prune #删除未被使用的数据卷

docker image prune #删除 dangling 或所有未被使用的镜像

3

让 docker 回到安装时的状态

这里的 "安装时的状态" 指资源占用情况而不是 docker 的相关配置。这也是一种比较常见的用例,比如就需要在一个干净的 docker 环境中自动化的还原出某天的一个生产环境(使用生产环境的备份数据)用于 bug 调查。

让我们一起来看看都需要做些什么?

回想我们前面介绍的 docker system prune --all --force --volumns 命令,如果在执行这个命令前系统中所有的容器都已停止,那么这个命令就会移除所有的资源!好,现在让我们想办法停掉系统中的所有容器。

docker container stop 命令可以停止一个或多个容器,我们只需要把系统中所有在运行的容器罗列出来就可以了。

由于 docker 并不介意我们再次停止一个已经停止了的容器,干脆简单粗暴点,直接列出所有的容器(包括已经停止的)!

$ docker container ls -a -q

Docker占用资源过高,如何快速清理Docker?

-a 显示所有的容器,-q 只显示数字形式的容器 ID。

然后把这里命令执行的结果作为 docker container stop 命令的参数:

$ docker container stop $(docker container ls -a -q)

完整的恢复 docker 环境的命令如下:

$ docker container stop $(docker container ls -a -q) && docker system prune --all --force --volumns

和前面的 prune 命令类似,也可以完全删除某一类资源:

删除容器:docker container rm $(docker container ls -a -q)

删除镜像:docker image rm $(docker image ls -a -q)

删除数据卷:docker volume rm $(docker volume ls -q)

删除 network:docker network rm $(docker network ls -q)

4

创建 shell 别名

上面的命令可以完成任务但是却很繁琐,我们可以通过 shell 的别名功能来简化这些命令的执行。

alias docker-clean-unused='docker system prune --all --force --volumes'

alias docker-clean-all='docker stop $(docker container ls -a -q) && docker system prune --all --force --volumes'

把上面的命令写入到用户的 ~/.bashrc 文件中就可以了!

Docker占用资源过高,如何快速清理Docker?

执行一次清理任务:

5

总结

经常清理系统资源不仅能够让系统运行的更流畅,也利于我们把精力集中在相关的重点资源上面。

所以建议大家能够使用相关的资源清理命令,让 docker 保持清爽和高效。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Docker
    +关注

    关注

    0

    文章

    461

    浏览量

    11860
  • 资源占用
    +关注

    关注

    0

    文章

    1

    浏览量

    1227

原文标题:Docker减肥小记

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在 Huawei Cloud EulerOS 系统中安装 Docker 的详细步骤与常见问题解决

    前言   1. 安装Docker   1.1 系统更新与依赖安装   1.2 添加华为云Docker仓库   2. 解决仓库配置错误   2.1 手动修改仓库配置文件   2.2 安装Docker
    的头像 发表于 12-26 18:12 194次阅读
    在 Huawei Cloud EulerOS 系统中安装 <b class='flag-5'>Docker</b> 的详细步骤与常见问题解决

    docker-compose配置文件内容详解以及常用命令介绍

    一、Docker Compose 简介 Docker Compose是一种用于定义和运行多容器Docker应用程序的工具。通过一个  docker-compose.yml  文件,您可
    的头像 发表于 12-02 09:29 417次阅读
    <b class='flag-5'>docker</b>-compose配置文件内容详解以及常用命令介绍

    三分钟学会Docker基本操作,快速入门容器威廉希尔官方网站 !

    机上一切正常”的回应,留下您满心的无奈与困惑? …… 那么,是时候学习并使用 Docker威廉希尔官方网站 了。通过快速掌握Docker,您将能够轻松实现在不同平台间上的无缝构建、测试与部署应用程序。Do
    的头像 发表于 11-11 17:22 167次阅读
    三分钟学会<b class='flag-5'>Docker</b>基本操作,<b class='flag-5'>快速</b>入门容器威廉希尔官方网站
!

    docker和k8s部署在云平台性能要求盘点

    Docker和Kubernetes在云平台部署时有各自的性能要求。Docker需要足够的CPU、内存和存储资源,以及快速的网络带宽和优化的镜像大小。而Kubernetes则强调集群管理
    的头像 发表于 11-05 10:47 192次阅读

    Docker运行环境安装

    作者:京东科技 林中 Docker是一个开放的平台,用于开发、发布和运行应用程序。Docker分离了应用程序和运行应用的基础设施,从而实现了软件的快速交付。利用docker提供的一系列
    的头像 发表于 10-29 11:28 222次阅读

    如何通过Docker使用香山

    资源包在通过Docker形式提供了运行香山必须的Linux操作系统、香山开发环境、香山和仿真相关工具的代码,会大大降低自己部署环境和工具的难度,理论上比自己部署要方便。如果想自己配置,可以参看本地使用香山的文档自行安装。
    的头像 发表于 10-29 09:38 218次阅读
    如何通过<b class='flag-5'>Docker</b>使用香山

    手动构建Docker镜像的方法

    不推荐使用docker commit命令,而应该使用更灵活、更强大的dockerfile来构建docker镜像。
    的头像 发表于 08-05 15:30 525次阅读
    手动构建<b class='flag-5'>Docker</b>镜像的方法

    ARM平台实现Docker容器威廉希尔官方网站

    。通过利用Docker快速发布、测试和部署代码的方法,可显著减少产品开发时间。Docker使用客户端——服务器(C/S)体系结构。Docker客户端与
    发表于 07-25 14:36

    ARM平台实现Docker容器威廉希尔官方网站

    。通过利用Docker快速发布、测试和部署代码的方法,可显著减少产品开发时间。Docker使用客户端——服务器(C/S)体系结构。Docker客户端与
    发表于 07-17 11:05

    Jtti:Docker会替代调虚机吗

    Docker是计算虚拟化的一种方式,和使用虚拟机进行虚拟化是类似的。由于近几年Docker威廉希尔官方网站 的流行和发展。所以单独介绍一下Docker。首先先回答下面一个问题。 1.Docker会替
    的头像 发表于 07-12 14:38 327次阅读
    Jtti:<b class='flag-5'>Docker</b>会替代调虚机吗

    关于Docker清理命令集锦

    这篇文章主要介绍了Docker 清理命令集锦,需要的朋友可以参考下 复制代码代码如下: docker kill $(docker ps -a -q)  删除所有已经停止的容器 复制代码
    的头像 发表于 06-13 15:56 386次阅读

    鸿蒙OpenHarmony威廉希尔官方网站 :【Docker编译环境】

    OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完成复杂的开发环境准备工作。
    的头像 发表于 05-11 09:47 1479次阅读
    鸿蒙OpenHarmony威廉希尔官方网站
:【<b class='flag-5'>Docker</b>编译环境】

    Docker容器威廉希尔官方网站 的安装和使用

    通过Docker,开发人员可以更容易地构建、交付和运行应用程序,同时确保应用程序的一致性和可移植性。它也使得应用程序的部署更加灵活和高效,因为它可以快速地启动、停止和扩展容器,而不会影响其他容器或主机系统。
    发表于 04-16 11:24 328次阅读
    <b class='flag-5'>Docker</b>容器威廉希尔官方网站
的安装和使用

    精通Docker网络:Bridge驱动深度解析

    除了使用 docker0 网桥外,用户还可以使用自定义的网桥,然后通过 --bridge=BRIDGE 参数传递给 docker daemon。
    的头像 发表于 03-31 15:58 1451次阅读
    精通<b class='flag-5'>Docker</b>网络:Bridge驱动深度解析

    ARM平台实现Docker容器威廉希尔官方网站

    ,亦可实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。使用Docker,可像管理应用程序一样管理基础结构。通过利用Docker快速发布、测试和部署代码的方法,可显著减少产品开发时间。  
    的头像 发表于 03-07 13:48 814次阅读
    ARM平台实现<b class='flag-5'>Docker</b>容器威廉希尔官方网站