4.1 获取镜像
从 Docker 镜像仓库获取镜像可谓是 Docker 运作的第一步。本节将介绍如何使用 docker pull 命令下载镜像,以及如何理解下载过程。
版本号最佳实践
永远指定版本号:避免使用
latest标签,应指定具体的版本(如ubuntu:24.04、nginx: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 ubuntu或ubuntu: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:下载速度很慢
配置镜像加速器
检查网络连接
尝试拉取更小的镜像版本(如
alpine变体)
Q:提示镜像不存在
可能原因:
镜像名拼写错误
私有镜像未登录(需要
docker login)镜像确实不存在
Q:磁盘空间不足
最后更新于