我一直在寻找,但无法找到分析Docker容器/卷的磁盘使用情况的方法 .
我可以看到Docker需要12GB的文件系统:
2.7G /var/lib/docker/vfs/dir
2.7G /var/lib/docker/vfs
2.8G /var/lib/docker/devicemapper/mnt
6.3G /var/lib/docker/devicemapper/devicemapper
9.1G /var/lib/docker/devicemapper
12G /var/lib/docker
但是,我怎么知道它是如何分布在容器上的呢?
我尝试通过运行(新的v1.3命令)附加到容器
docker exec -it <container_name> bash
然后运行'df -h'来分析磁盘使用情况 . 它似乎有效,但不适用于使用'volume-from'的容器 .
例如,我使用MongoDB的仅数据容器,称为“mongo-data” .
当我在容器内运行 docker run -it --volumes-from mongo-data busybox
,然后运行 df -h
时,它表示安装在 /data/db
(我的'mongo-data'仅数据容器)上的文件系统使用11.3G,但当我执行 du -h /data/db
时,它表示它仅使用2.1G .
那么,我该如何分析容器/卷磁盘的使用情况呢?或者,在我的情况下,我如何找出'mongo-data'容器大小?
非常感谢,
9 回答
要查看容器的文件大小,可以使用
docker ps
的-s
参数:在 1.13.0, Docker 之后包含一个新命令
docker system df
以显示docker disk usage .显示有关空间使用情况的更多详细信息
将此作为答案发布,因为我上面的评论被隐藏了:
列出容器的大小:
列出容器卷的大小:
编辑:列出所有正在运行的容器的大小和卷:
注意:根据您的Docker文件系统更改'devicemapper'(例如'aufs')
音量部分不再起作用,所以如果有人有兴趣我只是稍微更改上面的脚本:
(这个答案没用,但是因为有些评论可能会留在这里)
docker images
将显示'virtual size',即包括所有较低层的总数 . 如果你有共享相同基本图像的容器,那么有些重复计算 .documentation
如果你想减少多层图像的大小,我可以推荐Jason Wilder的
docker-squash
实用程序 . 从这里获取GitHub:https://github.com/jwilder/docker-squash您可以使用
了解图像大小如何在其各个子组件之间进行分配 .
请记住,docker
ps --size
可能是一个昂贵的命令,需要花费几分钟才能完成 . 这同样适用于size=1
的容器列表API请求 . 最好不要经常运行它 .看看我们编译的alternatives,包括docker持久性卷目录的
du -hs
选项 .我使用“docker stats $(docker ps --format = {{ . Names}}) - no-stream”得到1. CPU使用率,2 . Mem使用率/分配给容器的总mem(可以使用docker run分配)命令)3 . Mem%4 . 阻止I / O 5.网络I / O.