首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何分析Docker容器的磁盘使用情况

如何分析Docker容器的磁盘使用情况
EN

Stack Overflow用户
提问于 2014-11-05 17:01:17
回答 6查看 253.9K关注 0票数 312

我可以看到Docker占用了我12 of的文件系统:

代码语言:javascript
复制
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

但是,我如何知道它是如何分布在容器上的呢?

我尝试通过运行( new v1.3命令)附加到容器

代码语言:javascript
复制
docker exec -it <container_name> bash

然后运行'df -h‘来分析磁盘使用情况。它似乎起作用了,但不适用于使用“volumes-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‘容器大小?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-10-26 19:10:25

要查看容器的文件大小,可以使用docker ps--size参数

代码语言:javascript
复制
docker ps --size
票数 538
EN

Stack Overflow用户

发布于 2014-11-27 01:25:18

将此作为答案发布,因为我上面的评论被隐藏了:

列出容器的大小:

代码语言:javascript
复制
du -d 2 -h /var/lib/docker/devicemapper | grep `docker inspect -f "{{.Id}}" <container_name>`

列出容器卷的大小:

代码语言:javascript
复制
docker inspect -f "{{.Volumes}}" <container_name> | sed 's/map\[//' | sed 's/]//' | tr ' ' '\n' | sed 's/.*://' | xargs sudo du -d 1 -h

编辑:列出所有正在运行的容器的大小和体积:

代码语言:javascript
复制
for d in `docker ps -q`; do
    d_name=`docker inspect -f {{.Name}} $d`
    echo "========================================================="
    echo "$d_name ($d) container size:"
    sudo du -d 2 -h /var/lib/docker/devicemapper | grep `docker inspect -f "{{.Id}}" $d`
    echo "$d_name ($d) volumes:"
    docker inspect -f "{{.Volumes}}" $d | sed 's/map\[//' | sed 's/]//' | tr ' ' '\n' | sed 's/.*://' | xargs sudo du -d 1 -h
done

注意:根据您的Docker文件系统更改'devicemapper‘(例如'aufs')

票数 30
EN

Stack Overflow用户

发布于 2015-09-03 05:56:13

卷部分不再工作了,所以如果有人感兴趣,我只需要稍微修改一下上面的脚本:

代码语言:javascript
复制
for d in `docker ps | awk '{print $1}' | tail -n +2`; do
    d_name=`docker inspect -f {{.Name}} $d`
    echo "========================================================="
    echo "$d_name ($d) container size:"
    sudo du -d 2 -h /var/lib/docker/aufs | grep `docker inspect -f "{{.Id}}" $d`
    echo "$d_name ($d) volumes:"
    for mount in `docker inspect -f "{{range .Mounts}} {{.Source}}:{{.Destination}}                                                                                                                                                      
    {{end}}" $d`; do
        size=`echo $mount | cut -d':' -f1 | sudo xargs du -d 0 -h`
        mnt=`echo $mount | cut -d':' -f2`
        echo "$size mounted on $mnt"
    done
done
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26753087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档