Docker 命令查看并清理数据卷及磁盘

标签: Container Docker Docker Container | 发表时间:2021-10-19 08:00 | 作者:
出处:https://jueee.github.io/

Docker 在长时间使用的情况下,经常需要删除旧的容器并创建新的容器,长此以往,Docker 的数据卷 volumes 会产生了非常多的僵尸文件。

以下介绍如何查看并清理这些僵尸文件。

查询僵尸文件

在 Docker 1.9 以上的版本中,官方提供用于查询僵尸文件的命令:

  $ docker volume ls -qf dangling=true

Docker 1.13 引入了类似于 Linux 上 df 的命令,用于查看 Docker 的磁盘使用情况

  $ docker system dfTYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLEImages              47                  47                  11.89GB             879.7MB (7%)Containers          156                 154                 868.7GB             0B (0%)Local Volumes       642                 28                  1.359TB             389.5GB (28%)Build Cache         0                   0                   0B                  0B

上述信息可以看出:

  • Docker 镜像占用了 11.89GB 磁盘,
  • Docker 容器占用了 868.7GB 磁盘,
  • Docker 数据卷占用了 1.359TB 磁盘。

删除无用数据卷

手动删除命令

删除所有 dangling 数据卷(即无用的 Volume,僵尸文件):

  $ docker volume rm $(docker volume ls -qf dangling=true)

删除所有 dangling 镜像(即无 tag 的镜像):

  $ docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

删除所有关闭的容器:

  $ docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

清理 none 对象

删除关闭的容器、无用的数据卷和网络,以及 dangling 镜像(即无 tag 的镜像)

注意,所有关闭的容器都会被删除,请核查是否存在关闭运行但是需要保留的容器!

删除关闭的容器、无用的数据卷和网络:

  $ docker system pruneWARNING! This will remove:  - all stopped containers  - all networks not used by at least one container  - all dangling images  - all dangling build cacheAre you sure you want to continue? [y/N] y

删除更彻底,可以将没有容器使用 Docker 镜像都删掉:

  $ docker system prune -aWARNING! This will remove:  - all stopped containers  - all networks not used by at least one container  - all images without at least one container associated to them  - all build cacheAre you sure you want to continue? [y/N] y

docker system prune 命令是删除镜像、容器和网络的快捷方式。

在 Docker 17.06.0 及以前版本中,还可以删除卷。

在 Docker 17.06.1 及更高版本中必须为 docker system prune 命令明确指定 --volumes 标志才会删除卷。

  $ docker system prune --volumesWARNING! 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 dangling build cacheAre you sure you want to continue? [y/N] y

重启 Docker

使用上面几个方法的命令可以有效清理 Docker 运行所产生的无用文件,且无需重启 Docker 即可生效。

但是 Docker 也许存在某些 bug(内核 3.13 版本的 Docker 确诊),导致 Docker 无法清理一些无用目录,不过重启 Docker 可以解决这个问题。

再次查看占用

  $ docker system dfTYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLEImages              16                  16                  5.072GB             86.04MB (1%)Containers          102                 102                 57.04MB             0B (0%)Local Volumes       32                  9                   206.5MB             241.7kB (0%)Build Cache         0                   0                   0B                  0B

相比上次,占用明显降低了。

相关 [docker 命令 清理] 推荐:

Docker 命令查看并清理数据卷及磁盘

- - 小决的专栏
Docker 在长时间使用的情况下,经常需要删除旧的容器并创建新的容器,长此以往,Docker 的数据卷 volumes 会产生了非常多的僵尸文件. 以下介绍如何查看并清理这些僵尸文件. 在 Docker 1.9 以上的版本中,官方提供用于查询僵尸文件的命令:. Docker 1.13 引入了类似于 Linux 上 df 的命令,用于查看 Docker 的磁盘使用情况.

Docker & Flatpak

- - IT瘾-dev
目前最流行的技术莫过于Docker,Docker和Docker衍生的东西用到了很多很酷的技术,目前deepin应用软件发布转变成flatpak,这些看似风牛马不相及的技术方案,实际都使用了一个共同的底层技术——Namespace,假如没有namespace支持,这些技术实现都将成为空中楼阁. 一句话总结,无论是Docker、sysmted-nspawn还是flatpak,都是在namespace基础上,针对不同的场景,生出的不同的解决方案.

docker初体验之docker-tomcat

- - BlogJava-首页技术区
docker已经是现在最热的容器技术,最近也去体验了一下,在daocloud注册了一个账号,并开始本机实战docker. daocloud免费有两个容器可用,体验送T恤,邀请送书,这里我分享一个daocloud的邀请码 https://account.daocloud.io/signup?invite_code=mxeq2jkmcur37vz6ven8,daocloud是非常棒的容器云平台,使用体验好,问题响应也及时,绑定微信还送一个额外容器.

kubernetes移除Docker?

- -
两周前,Kubernetes在其最新的Changelog中宣布1.20之后将要弃用dockershime,也就说Kubernetes将不再使用Docker做为其容器运行时. 这一消息持续发酵,掀起了不小的波澜,毕竟Kubernetes+Docker的经典组合是被市场所认可的,大量企业都在使用. 看上去这个“弃用”的决定有点无厘头,那么为什么Kubernetes会做出这样的决定.

Docker应用场景

- - 灯火阑珊
Flynn:一个使用go语言编写的开源PaaS平台,目标是简化分布式环境中应用的部署和维护,可以通过git push命令,将应用部署到Docker,从而省去复杂的配置和操作. CoreOS:一种新的架构体系重新设计的Linux发型版,可以运行在既有的硬件活着云服务器上. CoreOS不提供类似yum或apt的包管理工具,用户不需要在CoreOS中安装软件,而是让程序都在Docker容器中运行.

docker使用场景

- - 开源软件 - ITeye博客
Docker应用容器相对于 VM 有以下几个优点:. 1、启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久. 2、资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试. 3、性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源. 因为VM 的 Hypervisor 需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销.

Docker 监控实战

- - SegmentFault 最新的文章
如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据:. 2 / 3 的公司在尝试了 Docker 后最终使用了它. 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 60 天内. 越大型的公司越早开始使用 Docker. 研究发现主机数量越多的公司,越早开始使用 Docker.

Docker入门例子

- - 开源软件 - ITeye博客
Docker 提供了一个可以运行应用程序的容器. Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的. 2 Docker安装与启动. #将docker加入开机启动. 3 Docker的14个基础命令. 检查Docker的安装是否正确. 运行"Hello World"例子.

Docker认识基础

- - CSDN博客推荐文章
作者:chszs,版权所有,未经同意,不得转载. 博主主页: http://blog.csdn.net/chszs. Docker是一个C/S架构的容器引擎,它包括镜像、容器和库这三个重要的概念. Docker是一个开源平台,它包含容器引擎和Docker Hub注册服务器. 1)Docker容器引擎.

Docker 调试技巧

- - 行业应用 - ITeye博客
摘要: 『重用』容器名 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种docker run --name jstorm-zookeeper zookeeper:3.4,然后就容器名就冲突了. 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种.