容器磁盘占用
容器列表中的 磁盘 列显示每个容器向自身文件系统写入了多少数据,运行中和已停止的容器都会显示。它与 docker ps -s 中 SIZE 列的第一个值相同,只是以二进制单位显示,所以 Docker 的 20.5kB 在这里显示为 20 KB。
统计范围
Docker 把它称为容器的可写层:容器在挂载点之外创建或修改的所有文件。容器在自身文件系统里写入临时文件、缓存或日志时,这个值会增长;启动后运行 apt install 的容器也一样。
以下内容不计入:
- 卷,包括命名卷和匿名卷
- 绑定挂载,例如
./data:/var/lib/postgresql/data - 镜像,即容器运行所用的镜像,由该镜像的所有容器共享
- Docker 自己为该容器保存的日志文件
大多数数据库和日志存储都把数据放在卷或绑定挂载里,所以一个存有 30 GB 数据的 Postgres 在这里可能只显示几 KB。这是正确的:那 30 GB 在挂载里,不在容器里。
查找其余占用
Docker 可以测量卷,但对绑定挂载的主机目录里有什么一无所知。要测量这样的目录,就得遍历其中的每个文件,而 Dozzle 不会这样做。要查看其余空间用在了哪里,请在主机上运行:
sh
# 卷,以及使用每个卷的容器数量
docker system df -v
# 一个绑定挂载的目录
du -sh /data/postgres要监控这些目录所在的磁盘,请按照 主机指标 中的说明,把它挂载到主机卡片上。
何时更新
Docker 不会在任何地方保存这个值。每次被询问时,它都会遍历可写层来计算,所以 Dozzle 很少询问:
- Dozzle 启动后不久,对每个容器测量一次
- 容器停止时再测量一次,因为此后它的可写层不会再变化
- 对于运行中的容器,在它写入约 100 MB 之后测量,或者只要它写入过任何数据,每 5 分钟测量一次
对运行中容器的检查只在有人打开 Dozzle 时进行。容器在首次测量之前显示 –。