gpt4 book ai didi

docker - docker system df 磁盘使用情况下真实和显示的区别

转载 作者:行者123 更新时间:2023-12-02 18:03:11 24 4
gpt4 key购买 nike

我有 18.03.1-ce 版本的 docker 支持命令 docker system df .他的输出:

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 命令)仅比以前多 cca 200MB,但是整个文件夹上的“du”输出了 4.2G 分配。
“diff”文件夹上的“du”显示 212M 是正确的。

这就是 Docker 的工作原理以及它的伟大之处!

关于docker - docker system df 磁盘使用情况下真实和显示的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50589971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com