如何在运行时获取Docker镜像大小及分析Docker容器运行时占用存储空间?
查看Docker运行中容器的实际存储空间占用方法
嘿,这个问题我之前也碰到过!你提到的dive或者docker inspect确实只能获取镜像打包后的静态大小,但容器运行时会产生可写层数据、日志,还有可能挂载了数据卷,这些都会额外占用存储空间。下面几种Docker自带的命令可以帮你准确查看:
使用
docker ps -s查看运行中容器的空间占用
这个命令是最直接的,执行后会列出所有运行中的容器,最后两列分别是:SIZE:容器运行时新增的数据(比如写入的文件、生成的日志、临时文件等),这部分是镜像本身没有的额外占用VIRTUAL SIZE:镜像大小 +SIZE,也就是容器总共占用的磁盘空间
执行命令示例:
docker ps -s你可以在输出里找到你的
my-image对应的容器,就能看到它实际的存储空间消耗了。用
docker system df -v查看Docker整体磁盘使用详情
这个命令会统计Docker所有资源的磁盘占用,包括镜像、容器、数据卷和构建缓存。在Containers部分,会列出每个容器的SIZE(即运行时新增的空间),把这个数值加上对应镜像的大小,就是容器的总占用空间。
执行命令:docker system df -v这个命令还能帮你快速排查Docker整体的磁盘占用情况,非常实用。
进入容器内部查看文件系统占用
如果想知道容器内部具体的存储分布(比如哪个目录占用空间最多),可以直接在容器内执行df -h命令:docker exec <你的容器ID或名称> df -h这样就能看到容器内各个挂载点的磁盘使用情况,比如根目录
/的已用空间,帮你定位具体的大文件或目录。
补充一下:容器的存储空间主要来自三个部分——镜像的只读层、容器的可写层,以及挂载的外部数据卷。dive和docker inspect只能获取只读层的大小,而上面的方法可以覆盖可写层和数据卷的占用情况,完全满足你的需求。
内容的提问来源于stack exchange,提问作者user5580578




