docker 系统 df 磁盘使用情况与实际显示的差异
问题:docker 系统 df 磁盘使用情况与实际显示的差异 我在版本 18.03.1-ce 中有支持命令docker system df的 docker。他的输出: Images space usage: REPOSITORY TAG IMAGE ID CREATED ago SIZE SHARED SIZE UNIQUE SiZE CONTAINERS registry.gitlab.com/
·
问题:docker 系统 df 磁盘使用情况与实际显示的差异
我在版本 18.03.1-ce 中有支持命令docker system df
的 docker。他的输出:
Images space usage:
REPOSITORY TAG IMAGE ID CREATED ago SIZE SHARED SIZE UNIQUE SiZE CONTAINERS
registry.gitlab.com/precisesale/app latest b7833546c2cf About an hour ago ago 252.1MB 123.8MB 128.4MB 1
healthdiary/app latest 565c6d3906e6 2 days ago ago 312.2MB 123.8MB 188.4MB 1
mongo latest f93ff881751f 5 days ago ago 367.6MB 0B 367.6MB 2
nginx latest b175e7467d66 6 weeks ago ago 108.9MB 0B 108.9MB 1
jwilder/docker-gen latest 8959ee34c769 2 months ago ago 19.91MB 4.148MB 15.77MB 1
jrcs/letsencrypt-nginx-proxy-companion latest 17939ceb7a52 2 months ago ago 86.86MB 4.148MB 82.71MB 1
Containers space usage:
CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE CREATED ago STATUS NAMES
c20dc3438552 healthdiary/app "./entrypoint.sh nod…" 0 0B 8 minutes ago ago Up 8 minutes healthdiary_app_1
bf8c4307dcbb mongo:latest "docker-entrypoint.s…" 1 0B 8 minutes ago ago Up 8 minutes healthdiary_mongo_1
47fced8d18fe registry.gitlab.com/precisesale/app "./entrypoint.sh nod…" 0 0B 9 minutes ago ago Up 9 minutes precisesale_app_1
597d97d5c1fa mongo:latest "docker-entrypoint.s…" 1 0B 9 minutes ago ago Up 9 minutes precisesale_db_1
b5bb14faa910 jwilder/docker-gen "/usr/local/bin/dock…" 0 0B 7 hours ago ago Up 19 minutes nginx-gen
8eee2bee084a nginx "nginx -g 'daemon of…" 0 2B 7 hours ago ago Up 19 minutes nginx-web
6b8b0cd5d938 jrcs/letsencrypt-nginx-proxy-companion "/bin/bash /app/entr…" 0 1.66kB 7 hours ago ago Up 19 minutes nginx-letsencrypt
Local Volumes space usage:
VOLUME NAME LINKS SIZE
0a40fac6ca98e776dad972c8193362a51a485b3305979e58996545d97310a3c7 1 0B
929b0b88849ad4d390efd4666e6a0e5f82e0e6dd34f7a09f609de90b190e6148 1 0B
Build cache usage: 0B
即使我不考虑从两个第一个容器中节省的共享空间,摘要大小也是1147.5 MB
但是,如果我通过du
测量磁盘上 docker overlay2 的大小,我会得到
du -hs /var/lib/docker/overlay2/
2.7G /var/lib/docker/overlay2/
docker system df
和du
测量的容器大小不同的原因在哪里?
解答
前段时间我也在想同样的事情。这不是一个错误,这是一个功能 :-)
du -sh /var/lib/docker/overlay2
未显示客观值,因为已使用覆盖驱动程序安装了合并文件夹,并且 du 输出不是实际的磁盘分配大小。
您可以通过仅检查 diff 文件夹来查看实际的磁盘分配大小,例如:
du -shc /var/lib/docker/overlay2/*/diff
您可以像这样在您的环境中测试它:运行
df -h /dev/sd*
du -shc /var/lib/docker/overlay2/*/diff
du -sh /var/lib/docker/overlay2
现在启动 20 个 centos 容器并观察发生了什么变化:
for i in {1..20}; do docker run -itd centos bash; done
df -h /dev/sd*
du -shc /var/lib/docker/overlay2/*/diff
du -sh /var/lib/docker/overlay2
您可以看到实际磁盘分配(df 命令)仅比以前多 200MB,但整个文件夹上的“du”输出 4.2G 分配。 “diff”文件夹上的“du”显示 212M 什么是正确的。
这就是 Docker 的工作原理,以及它的伟大之处!
更多推荐
已为社区贡献35539条内容
所有评论(0)