You need to enable JavaScript to run this app. 如何让Ubuntu上Docker多阶段构建的缓存行为与Windows保持一致
优惠活动
大模型
产品
解决方案
定价
更多

如何让Ubuntu上Docker多阶段构建的缓存行为与Windows保持一致

差异原因

两个环境构建行为不同的核心原因是默认使用的构建引擎不同:

  • Windows Docker Desktop默认启用了BuildKit(Docker新一代构建引擎),内置依赖链路分析能力,构建时只会执行最终目标依赖的阶段,自动跳过无关的冗余步骤
  • Ubuntu 20.10及更早版本的Docker Engine默认使用传统Legacy构建引擎,会按Dockerfile的书写顺序逐行执行所有阶段,不会主动跳过目标不需要的步骤
配置方案

单次临时启用

执行构建命令前注入环境变量即可,无需修改全局配置:

DOCKER_BUILDKIT=1 docker build .

指定target构建的命令示例:

DOCKER_BUILDKIT=1 docker build --target step2 .

执行后即可获得和Windows环境一致的构建输出与缓存优化效果。

全局永久启用

  1. 编辑Docker daemon配置文件/etc/docker/daemon.json,添加如下配置:
{
  "features": {
    "buildkit": true
  }
}
  1. 重启Docker服务使配置生效:
sudo systemctl restart docker

配置完成后所有docker build操作默认使用BuildKit引擎,和Windows Docker Desktop的构建行为完全一致。

补充说明

BuildKit从Docker 18.09版本开始就已正式稳定,Docker 23.0及之后版本已经将其设为默认构建引擎,无需额外配置。启用后除了自动跳过无关阶段,还能带来并行构建、缓存效率提升、镜像体积优化等额外收益,生产环境也推荐开启。

内容的提问来源于stack exchange,提问作者tr_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 10:15:09