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