Docker build生成大量windowsfilter文件夹的作用及管控方法
Windows Docker
windowsfilter 目录相关问题解答 一、windowsfilter 目录下文件夹的作用
Docker 针对 Windows 系统采用分层存储的文件系统隔离机制,windowsfilter 就是 Docker 存储所有镜像层、容器层的核心目录:
- 每一条可生成新镜像层的 Dockerfile 指令(RUN、COPY、WORKDIR、SHELL 等)执行后,产生的差异文件都会存放在一个独立的子文件夹中,这也是你观测到文件夹数量和指令条数对应的原因
- 除了构建过程产生的中间层、最终镜像层,你拉取的公共基础镜像的每一层、运行中容器的可写层也都会对应该目录下的独立子文件夹
- 所有层文件夹通过联合挂载的方式组合,最终形成容器内可见的完整文件系统
二、避免冗余存储、保持存储整洁的方案
1. 优化 Dockerfile 从源头减少不必要的层
这是减少冗余最直接的手段:
- 合并同类指令:多条功能相关的 RUN 指令可以合并为一条,比如
RUN mkdir root && cd root && mkdir test可替代 3 条独立 RUN 指令,直接减少2个层文件夹 - 优先使用自带操作能力的指令:你已经用到的
WORKDIR会自动创建不存在的目录并切换工作路径,无需额外 RUN 指令执行创建、切换操作,可直接减少冗余层 - 同层清理临时文件:如果 RUN 指令内有下载、解压等产生临时文件的操作,要将临时文件删除的逻辑写在同一条 RUN 指令中,避免临时文件被存入独立层占用额外空间
2. 用 Docker 内置命令清理无用资源
不要手动删除 windowsfilter 下的文件夹,很容易损坏镜像、容器的存储结构,建议使用 Docker 自带的清理命令:
- 清理所有悬空镜像、已停止的容器、无用网络、过期构建缓存:执行
docker system prune - 如需连未被任何容器使用的镜像也一起清理,可加参数执行
docker system prune -a - 仅清理构建缓存可执行
docker builder prune
3. 配置 Docker 存储限制规则
你可以修改 Docker 的 daemon.json 配置文件,添加存储相关限制避免空间无限制膨胀:
- 配置
storage-opts中的size参数,限制单个容器可写层的最大容量,避免单个容器占用过多空间 - 配置
builder相关的缓存过期规则,自动清理超过指定时间未使用的构建缓存
修改配置后需要重启 Docker 服务生效
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

