For the complete documentation index, see llms.txt. This page is also available as Markdown.

4.1 获取镜像

从 Docker 镜像仓库获取镜像可谓是 Docker 运作的第一步。本节将介绍如何使用 docker pull 命令下载镜像,以及如何理解下载过程。

版本号最佳实践

  • 永远指定版本号:避免使用 latest 标签,应指定具体的版本(如 ubuntu:24.04nginx:1.28),以确保镜像内容稳定一致。

  • 在生产环境使用摘要:优先使用镜像摘要(SHA256)而非标签,如 nginx@sha256:abc123...,因为摘要不可变。

  • 定期评估依赖:即使指定了版本号,仍应定期检查依赖的基础镜像是否有安全更新。

4.1.1 docker pull 命令

从镜像仓库获取镜像的命令是 docker pull

docker pull [选项] [Registry地址/]仓库名[:标签]

镜像名称格式

Docker 镜像名称由 Registry 地址、用户名、仓库名和标签组成。其标准格式如下:

docker.io / library / ubuntu : 24.04
────┬────   ───┬───   ──┬───   ──┬──
                             
Registry地址  用户名    仓库名    标签
 (可省略)    (可省略)
组成部分
说明
默认值

Registry 地址

镜像仓库地址

docker.io (Docker Hub)

用户名

镜像所属用户/组织

library(官方镜像)

仓库名

镜像名称

必须指定

标签

版本标识

latest

示例


4.1.2 下载过程解析

当我们执行 docker pull 命令时,Docker 会输出详细的下载进度。让我们以 ubuntu:24.04 为例来解析这些信息。

输出解读

输出内容
说明

Pulling from library/ubuntu

正在从官方 ubuntu 仓库拉取

92dc2a97ff99: Pull complete

各层的下载状态(显示层 ID 前 12 位)

Digest: sha256:...

镜像内容的唯一摘要

docker.io/library/ubuntu:24.04

镜像的完整名称

分层下载

从输出可以看到,镜像是 分层下载 的:

如果本地已有相同的层,Docker 会跳过下载,节省带宽和时间。


4.1.3 常用选项

docker pull 命令支持多种选项来满足不同的下载需求,例如下载所有标签、指定平台架构等。

选项
说明
示例

--all-tags, -a

拉取所有标签

docker pull -a ubuntu

--platform

指定平台架构

docker pull --platform linux/arm64 nginx

--quiet, -q

静默模式

docker pull -q nginx

指定平台

在 Apple Silicon Mac 上拉取 x86 镜像:


4.1.4 拉取后运行

拉取镜像后,可以基于它启动容器:

本例使用 ubuntu:24.04 这样的具体版本标签是最佳实践。若无特殊需求,避免使用 docker pull ubuntuubuntu:latest,因为镜像内容可能在某个时刻发生变化。

参数说明

参数
说明

-it

交互式终端模式

--rm

退出后自动删除容器

bash

启动命令

💡 docker run 在需要时会自动 pull 镜像,因此通常不需要单独执行 docker pull


4.1.5 镜像加速

从 Docker Hub 下载可能较慢。可以配置镜像加速器:

配置后重启 Docker:

详见镜像加速器章节。


4.1.6 验证镜像完整性

为了确保下载的镜像没有被篡改且内容一致,我们可以校验镜像的摘要 (Digest)。

查看镜像摘要

使用摘要拉取

用摘要拉取可确保获取完全相同的镜像:

笔者建议:生产环境使用摘要而非标签,因为标签可能被覆盖,摘要则是不可变的。


4.1.7 常见问题

在使用 docker pull 过程中,可能会遇到下载速度慢、镜像不存在或磁盘空间不足等问题。以下是一些常见问题的排查思路。

Q:下载速度很慢

  1. 配置镜像加速器

  2. 检查网络连接

  3. 尝试拉取更小的镜像版本(如 alpine 变体)

Q:提示镜像不存在

可能原因:

  • 镜像名拼写错误

  • 私有镜像未登录(需要 docker login

  • 镜像确实不存在

Q:磁盘空间不足


最后更新于