欢迎来到天天文库
浏览记录
ID:27488293
大小:178.00 KB
页数:7页
时间:2018-12-04
《Docker占用资源过高,如何快速清理Docker?.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Docker占用资源过高,如何快速清理Docker?docker减肥记 如果经常使用docker,你会发现docker占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用。 如何快速的清理docker占用的系统资源,具体点说就是删除那些无用的镜像、容器、网络和数据卷… 1 查看docker占用的资源 在进行资源清理之前我们有必要搞清楚docker都占用了哪些系统的资源。 这需要综合使用不同的命令来完成。 dockercontainerls:默认只列出正在运行的容器,-a选项会列出包括停止的所有容器。 dock
2、erimagels:列出镜像信息,-a选项会列出intermediate镜像(就是其它镜像依赖的层)。 dockervolumels:列出数据卷。 dockernetworkls:列出network。 dockerinfo:显示系统级别的信息,比如容器和镜像的数量等。 通过这些命令查看docker使用的资源情况后, 相信你已经决定要清理docker占用的一些资源了! 2 让我们先从那些未被使用的资源开始。 只删除那些未被使用的资源 Docker提供了方便的dockersystemprune命令来删除那些已停止的容器、dangl
3、ing镜像、未被容器引用的network和构建过程中的cache: $dockersystemprune 安全起见,这个命令默认不会删除那些未被任何容器引用的数据卷,如果需要同时删除这些数据卷,你需要显式的指定--volumns参数。比如你可能想要执行下面的命令: $dockersystemprune--all--force--volumns 这次不仅会删除数据卷,而且连确认的过程都没有了! 注意使用--all参数后会删除所有未被引用的镜像而不仅仅是dangling镜像。 这里有必要解释一下何为danglingimages,其实
4、可以简单的理解为未被任何镜像引用的镜像。比如在你重新构建了镜像后,那些之前构建的且不再被引用的镜像层就变成了danglingimages: 在本地的镜像更新之后,就会出现类似图中红框内的镜像。这表示旧的镜像已经不再被引用了,此时它们就变成了danglingimages。如果使用-a参数,你还会发现另外一种类型的镜像,它们的repository和tag列都表现为: 这些镜像被称为intermediate镜像(就是其它镜像依赖的层)。 我们还可在不同在子命令下执行prune,这样删除的就是某类资源: dockercontainerp
5、rune#删除所有退出状态的容器 dockervolumeprune#删除未被使用的数据卷 dockerimageprune#删除dangling或所有未被使用的镜像 3 让docker回到安装时的状态 这里的“安装时的状态”指资源占用情况而不是docker的相关配置。这也是一种比较常见的用例,比如就需要在一个干净的docker环境中自动化的还原出某天的一个生产环境(使用生产环境的备份数据)用于bug调查。 让我们一起来看看都需要做些什么? 回想我们前面介绍的dockersystemprune--all--force--volum
6、ns命令,如果在执行这个命令前系统中所有的容器都已停止,那么这个命令就会移除所有的资源!好,现在让我们想办法停掉系统中的所有容器。 dockercontainerstop命令可以停止一个或多个容器,我们只需要把系统中所有在运行的容器罗列出来就可以了。 由于docker并不介意我们再次停止一个已经停止了的容器,干脆简单粗暴点,直接列出所有的容器(包括已经停止的)! $dockercontainerls-a-q -a显示所有的容器,-q只显示数字形式的容器ID。 然后把这里命令执行的结果作为dockercontainerstop命令的
7、参数: $dockercontainerstop$(dockercontainerls-a-q) 完整的恢复docker环境的命令如下: $dockercontainerstop$(dockercontainerls-a-q)&&dockersystemprune--all--force--volumns 和前面的prune命令类似,也可以完全删除某一类资源: 删除容器:dockercontainerrm$(dockercontainerls-a-q) 删除镜像:dockerimagerm$(dockerimagels-a-q)
8、删除数据卷:dockervolumerm$(dockervolumels-q) 删除network:dockernetworkrm$(dockern
此文档下载收益归作者所有