首页/云/Docker 容器速查/docker build --pull 刷新基础镜像
镜像与构建107 条

docker build --pull 刷新基础镜像

构建前尝试拉取基础镜像的新版本:tag 未变但内容更新(常见于 latest)时,只有加 --pull 才能拿到。

Docker 容器速查云更新于 2026-10-13

--pull 是什么

默认情况下,只要本地已经有同名基础镜像,构建就直接用它,不会去仓库确认上游是否更新过。加上 --pull 后,构建前会先向仓库查询基础镜像的当前内容,有更新就拉下来再构建。这个参数解决的是「标签没变、内容变了」的情况:上游用同一个标签发布了新版底座,你不加 --pull 就永远拿到本地那份旧内容。

基本信息

语法docker build --pull -t 名称 构建上下文
buildx 写法docker buildx build --pull -t 名称 .
默认行为本地已有基础镜像即复用,不检查远端
适用场景安全例行更新、怀疑底座过旧、CI 定期重建
副作用构建结果可能与上次不同,需要完整回归
配套手段镜像扫描与基础镜像版本巡检

典型使用场景

  • 每周例行重建:把上游底座的安全补丁带进业务镜像
  • 排查只在别人环境复现的问题时,确认双方底座是否一致
  • 需要最新底座特性(新版语言运行时、新发行版)时
  • CI 中作为固定步骤,避免长期复用构建机上的陈旧缓存镜像
  • 安全事件后紧急刷新底座,快速获得上游修复

使用与验证

使用与验证
# 构建前刷新基础镜像;配合 --no-cache 可排除缓存层干扰
 docker build --pull -t app/web:1.0 .

# buildx 同样支持;多平台构建时每个平台的基础镜像都会重新确认
 docker buildx build --pull --platform linux/amd64 --load -t app/web:1.0 .

# 核对本地底座的时间与摘要,判断是否已刷新
 docker image inspect node:20-alpine --format '{{.Created}} {{index .RepoDigests 0}}'

# 清理未被使用的旧底座镜像,避免磁盘持续增长
 docker image prune -f

参数组合怎么读

组合作用何时使用
--pull刷新基础镜像例行更新与安全跟进
--no-cache忽略构建缓存怀疑缓存层陈旧或结果异常
二者同用底座与各层全部重算紧急刷新与最终发布验收
都不加可能完全复用本地内容快速迭代开发阶段
--pull --platform按平台刷新底座多架构发布
--pull 刷新的是基础镜像,不会刷新构建上下文里 COPY 进来的本地文件,也不会自动更新应用依赖;依赖升级要另走包管理器与锁文件流程。
固定到摘要的 Dockerfile 不受 --pull 影响:摘要指向确定内容,上游新补丁不会改变它,需要显式改摘要才能升级。

易错点

  • 长期不带 --pull 构建会一直复用本地旧底座,上游安全修复进不来,扫描报告持续告警却查不到原因
  • 带 --pull 的构建结果可能与上次不同,没有回归测试就直接发布,等于把未验证的上游变更推上生产
  • 误以为 --pull 会更新应用依赖或系统包,实际它只处理基础镜像,包升级仍要在 Dockerfile 里显式执行
  • 在离线或内网环境里不加区分地加 --pull,仓库不可达时构建直接失败,需要按环境区分流水线参数

数据来源与参考

  • Docker 官方 CLI 参考:docker build --pull(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌