文档章节

Docker减肥小记

寰宇01
 寰宇01
发布于 06/25 15:53
字数 1375
阅读 12
收藏 0
点赞 0
评论 0

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

 

 

 

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

 

 

 

这些镜像被称为 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

 

    

 

 

-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 文件中就可以了!

 

 

 

执行一次清理任务:

 

 

 

5、总结

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

 

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

觉的应该是对磁盘空间的占用。

本文转载自:https://mp.weixin.qq.com/s/Q_HHa2kFrskhKf0e1incag

共有 人打赏支持
寰宇01
粉丝 5
博文 229
码字总数 470082
作品 0
南京
程序员
Docker命令小记。

记录一下Docker中的命令,容器名称以:leafage 为例,不定时更新。 启动docker:systemctl start docker( RHEL7 红帽企业版”(Red Hat Enterprise Linux)) / service docker start (Linux...

Leafage_M
2017/11/17
0
0
Docker简明手册

查看docker的子命令,直接敲或完整的就可以了: root@tankywoo-docker:~# docker [1/1617] Usage: docker [OPTIONS] COMMAND [arg...] -H=[unix:///var/run/docker.sock]: tcp://host:port to......

openthings
2016/03/28
98
0
你应该知道的 5 个 Docker 工具

你可以在网上找到大量炫酷的Docker 工具,并且大部分是开源的,可以通过Github访问。在过去的两年里,我开始在开发项目中大量使用Docker。当你开始使用Docker,你会发现它比你想象的还要适合...

GavinHsueh
2017/06/07
0
0
6大Container OS介绍

根据Google自己的估计,每一周启用的Container多达20亿个,虽然一般企业不会出现上亿个Container的管理需求,但要在整座数据中心内的多台服务器上部署数百到数千个Container,仍然不是一件容...

Jason-ZH
2015/12/20
1K
0
无论多胖的人,看完这些你都会有所改变

照片中这个阳光明媚,美丽大方的女孩叫Tina。 是健康体重管理领域的名人。 她进军大健康产业 2年时间成功帮助万人减肥成功。 多位明星大咖为她的品牌代言。 但谁会知道,两年前的Tina 还是一...

qq_42141808
05/05
0
0
Hitchhiker 0.1.1 发布, API 集成测试工具

Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以在轻松部署到本地,和你的 team 成员一起管理 Api。 能做什么 Team 协作开发 Api Api 历史修改记录及支持 diff 展示 支持多环境变...

不白兄
2017/08/28
1K
13
MyEclipse 2016 CI 4 支持BootStrap模板

Live Preview with CodeLive 目前CodeLive还只有Live Preview这一个功能,在后续的版本中会陆续添加新功能。 新增Bootstrap模板 在模板面板中选择相应的模板,根据自己的样式需求快速定义,W...

百mumu
2016/07/01
28
0
Restful Api 集成测试工具--Hitchhiker

Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以在轻松部署到本地,和你的 team 成员一起管理 Api。 能做什么 Team 协作开发 Api Api 历史修改记录及支持 diff 展示 支持多环境变...

匿名
2017/08/28
1K
3
关于减肥的5个谎言,你听过吗?

努力减肥, 体重依然不降? 可能是你用错了方法。 小医有一个爱好减肥的“胖”友, 想减了,就每天做0油沙拉,拍照,吃。健身房的搏击操、杠铃操一个也不落下。 坚持不住了,就当场还俗,屏蔽...

医兮
2017/12/29
0
0
谷歌开源Docker镜像分析比对工具container-diff

谷歌发布了一个叫作container-diff的工具,用于分析比对Docker镜像。它支持文件系统比对,并能够感知到由apt、npm和pip这些包管理器所带来的变更。 Dockerfile用于创建容器镜像,一旦Dockerf...

docker
2017/11/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
44分钟前
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
45分钟前
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
昨天
1
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
昨天
0
0
TensorFlow,从一个 Android Demo 开始

TensorFlow Android Demo 项目地址 Machine Learning 既然提到了 TensorFlow,那是不是得神经网络、机器学习了解下? 如果你能坚持把 机器学习速成课程 给啃完了,觉得还挺有兴趣的,那可以考...

孟飞阳
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部