docker pull 是什么
从镜像仓库把镜像与指定标签下载到本地。它是部署与排障的常见前置动作:构建时基础镜像缺失会自动拉取,运行前也可以先拉下来确认镜像存在、检查平台架构是否匹配、避免启动时才发现拉取失败。
基本信息
| 语法 | docker pull [选项] 名称[:标签] |
|---|---|
| 不写标签时 | 默认拉取 latest |
| 常用选项 | --platform 指定平台 --quiet 精简输出 --all-tags 拉取该仓库全部标签 |
| 权限要求 | 公开镜像无需认证,私有仓库需要先登录 |
| 网络依赖 | 需要能访问对应仓库,内网环境通常配置镜像加速或自建仓库 |
典型使用场景
- 部署前预拉取:避免启动时才下载,减少服务不可用时间
- 确认版本存在:核对目标版本标签是否已在仓库发布
- 跨平台准备:在构建或部署前按目标处理器架构拉取对应镜像
- 离线环境准备:提前拉取并导出,再导入到无法联网的机器
- 排查环境差异:对比本地与目标环境的镜像版本,确认行为差异来源
常用示例
常用示例
docker pull nginx:1.27-alpine # 拉取指定版本
docker pull --quiet postgres:16-alpine # 精简输出,适合脚本
docker pull --platform linux/arm64 nginx:1.27-alpine # 指定平台架构
docker images nginx # 确认已下载到本地
docker login registry.example.com && docker pull registry.example.com/team/app-web:1.0 # 私有仓库常见失败与原因
| 现象 | 原因 | 处理办法 |
|---|---|---|
| 找不到标签 | 名称或版本拼写错误,或仓库里没有该版本 | 核对仓库页面或列表命令确认标签存在 |
| 认证失败 | 私有仓库未登录或令牌过期 | 重新登录后再拉取,检查凭据是否被清理 |
| 没有匹配的平台 | 镜像未发布该架构 | 改用支持该架构的镜像,或指定可用平台 |
| 拉取中断或超时 | 网络受限或仓库限流 | 配置加速地址或自建仓库,重试时先确认网络连通性 |
| 磁盘空间不足 | 本地数据目录容量告急 | 清理镜像与缓存后再重试 |
拉取策略怎么定
- 生产部署引用具体版本标签,行为可预期,出问题也容易回滚
- 对可复现性要求高时按摘要引用,摘要不会随时间变化
- 测试环境可以用浮动标签快速跟进最新版本,但要清楚它随时会变
- 内网环境提前预热常用镜像,避免上线窗口期被网络问题拖住
- 拉取与推送的凭据要区分,只给部署环节拉取权限,减小风险
拉完之后要做的核对
- 核对镜像标识与摘要,确认与发布记录一致
- 确认基础镜像版本符合预期,尤其是安全更新后的重新发布
- 确认镜像架构与部署机器匹配,避免启动时报格式错误
- 确认镜像体积与预期接近,异常偏小要警惕拉取不完整
- 确认磁盘余量充足,避免多实例部署时把数据目录写满
多架构镜像会按本机平台自动选择匹配的清单。显式指定平台时以指定值为准,用它可以在一台机器上准备另一种架构的镜像。
依赖浮动标签会让下次拉取得到不同内容,同一份部署在不同时间上线结果不一致。生产引用要写成具体版本或摘要。
内网环境的准备
- 搭建内部仓库并同步常用基础镜像,减少对外网依赖
- 为常用基础镜像做定时同步,保证安全补丁能及时跟上
- 拉取凭据用只读权限的账号,部署环境不保留推送权限
- 在离线环境中用导入导出的方式传递镜像,导入后核对摘要一致
- 把镜像预热纳入部署流程,别把网络下载时间算进上线窗口