docker-compose pull 可一键下载 docker-compose.yml 中所有声明了 image 字段的服务镜像,不处理 build 构建项;支持并发拉取,可加 --quiet 或 --parallel 优化;失败时需检查镜像名、登录状态、网络及镜像源。

直接用 docker-compose pull 就能一键下载 docker-compose.yml 中定义的所有镜像,前提是配置文件里明确写了 image: 字段(而不是靠 build: 本地构建)。
确认 compose 文件中镜像来源是远程 image
只有声明了 image: 的服务才会被 pull 下载。例如:
-
nginx:alpine→ ✅ 可 pull -
redis:7.0→ ✅ 可 pull -
myapp:+build: ./src→ ❌ 不会 pull,需docker-compose build
执行一键拉取命令
在 docker-compose.yml 所在目录下运行:
docker-compose pull
它会自动解析所有 service 的 image 值,逐个调用 docker pull。支持并发拉取,速度比手动一个个敲快得多。
加 --quiet 可隐藏进度,只输出最终状态;加 --parallel(v2.20+)可进一步提升并发数。
常见问题处理
如果遇到拉取失败,先检查:
- 镜像名拼写是否正确(比如
mysql:8.0写成mysql:8.o) - 是否需要登录私有仓库:
docker login registry.example.com - 网络是否通畅,或是否已配置国内镜像源(如
https://docker.1ms.run) - 某些镜像可能被重命名或迁移到新仓库(如
library/redis现在简写为redis)
验证是否全部拉取成功
运行以下命令查看已下载的镜像是否匹配 compose 定义:
docker-compose config --services | xargs -I{} docker-compose config | grep -A 2 "service: {}" | grep "image:" | awk '{print $2}' | xargs -n1 docker images --format "{{.Repository}}:{{.Tag}}" | sort -u
或者更简单的方式:
docker-compose images
输出中状态列显示 Up to date 表示对应镜像已就位,Pending 或空白说明还没拉下来。











