Docker 中 --pull 参数强制拉取最新镜像

FreeGuideOnline 最新 2026-07-07

bash

默认行为:如果本地没有 nginx:latest 就拉取,有则直接使用

docker run --pull missing nginx:latest

强制拉取:无论如何先尝试从仓库获取最新版本

docker run --pull always nginx:latest

只使用本地:本地没有镜像则直接报错,不联网

docker run --pull never my-custom-image:v1


### 实际场景演示

假设你之前拉取过 `alpine:3.18`,现在远程仓库中 `alpine:3.18` 标签已更新了安全补丁。

```bash
# 使用默认策略,Docker 直接使用本地缓存,不会获取新补丁
docker run --rm -it alpine:3.18 cat /etc/alpine-release

# 使用 --pull always 强制刷新
docker run --rm --pull always alpine:3.18 cat /etc/alpine-release

在 CI/CD 或生产部署脚本中,--pull always 是保证镜像处于最新状态的重要手段。


docker build --pull:构建时更新基础镜像

构建镜像时,您也可以在 docker build 命令中使用 --pull 参数。它的作用与容器运行时类似,但针对的是 Dockerfile 中 FROM 指令所引用的基础镜像

docker build--pull 的行为

用法 效果
docker build --pull . 始终尝试从仓库拉取 FROM 指定的基础镜像的最新版本,即使本地已有
docker build --no-pull . 严格使用本地基础镜像,不拉取(等同于 --pull never 但语法不同)
不指定任何拉取参数 默认行为与 run 类似:本地存在则直接用,不存在则拉取

示例:保证基础镜像的最新性

假设你的 Dockerfile 以 FROM python:3.11-slim 开头,你希望每次构建都使用最新的 slim 基础镜像:

# 不使用 --pull 时,构建会复用本地已缓存的 python:3.11-slim
docker build -t my-app:latest .

# 添加 --pull 强制拉取基础镜像
docker build --pull -t my-app:latest .

这种用法对安全补丁更新、依赖库更新等场景非常关键,能避免因为基础镜像过旧而引入已知漏洞。


通过 docker pull 手动拉取最新镜像

除了 --pull 参数,你也可以在运行或构建之前,单独使用 docker pull 命令显式拉取最新镜像:

docker pull nginx:latest