docker磁盘空间管理
docker虽然是“轻量级”的虚拟化解决方案,但其磁盘空间管理仍然是一个非常重要同时值得关注的问题,毕竟节约一份空间就是为企业节约一项成本,作为一个秉承勤俭持家的好员工,必须对这块的成本进行开刀。 docker 容器磁盘空间管理 docker 主要包括镜像、容器和数据卷三部分,对docker的磁盘空间管理也主要从着三块入手,在做docker磁盘空间分析之前我们需要简单了解下容器的“镜像层”的概念,一般容器的磁盘管理有一大半是镜像层相关: 什么是镜像层? 说到镜像的层,就要说说Docker镜像的存储组织方式 docker 镜像是采用分层的方式构建的,每个镜像都由一系列的 "镜像层" 组成。"镜像层"用来存储一组镜像相关的元数据信息,主要包括镜像的架构(如 amd64)、镜像默认配置信息、构建镜像的容器配置信息、包含所有镜像层信息的 rootfs。当需要修改容器镜像内的某个文件时,docker 利用 rootfs 中的 diff_id 计算出内容寻址的索引(chainID) 来获取 layer 相关信息,进而获取每一个镜像层的文件内容,容器对镜像的修改只对处于最上方的读写层进行变动,不覆写下层已有文件系统的内容,已有文件在只读层中的原始版本仍然存在,但会被读写层中的新版本所隐藏。在多个容器之间共享镜像,每个容器在启动的时候并不需要单独复制一份镜像文件