最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎么通过 docker pull 同时拉取整个镜像仓库的所有标签
时间:2026-07-11 08:54:51 编辑:袖梨 来源:一聚教程网
Docker官方CLI不支持docker pull一次性拉取镜像所有标签,必须先通过API或skopeo获取标签列表,再逐个执行docker pull;私有仓库需先登录并处理认证,推荐用skopeo替代以支持分页、多协议及无daemon操作。Docker 官方 CLI 不支持直接通过
docker pull 一次性拉取某个镜像仓库下的所有标签。 这是设计使然——docker pull 只能指定一个镜像名和一个标签(如 nginx:alpine),或省略标签默认拉取 latest,无法枚举并批量拉取全部 tag。但你可以通过组合外部工具实现“拉取所有标签”的效果。核心思路是:**先获取远程仓库的所有标签列表,再逐个拉取**。以下是实用方法:获取并拉取公共仓库(如 Docker Hub)的所有标签
以 nginx 为例(需替换为你想操作的镜像名):
- 使用
curl调用 Docker Hub API 获取标签列表(无需登录):
curl -s "https://hub.docker.com/v2/repositories/nginx/tags?page_size=100" | jq -r '.results[].name' | sort -V
- 将结果传给
docker pull逐个执行(加2>/dev/null抑制重复拉取提示):
curl -s "https://hub.docker.com/v2/repositories/nginx/tags?page_size=100" | jq -r '.results[].name' | sort -V | xargs -I{} docker pull nginx:{}
注意:Docker Hub 的 API 分页限制为 100 条/页,若标签超量需处理分页(page=2 等),或改用更稳定的第三方工具如 skopeo。
私有仓库或需要认证的场景
- 私有 registry(如
my-registry.example.com/myapp)通常不开放公开标签 API;需确认其是否支持v2/_catalog或v2/<repo>/tags/list接口 - 调用前先登录:
docker login my-registry.example.com - 例如获取标签:
curl -s --header "Authorization: $(awk '/^Auth:/ {print $2}' ~/.docker/config.json | base64 -d)" "https://my-registry.example.com/v2/myapp/tags/list" | jq -r '.tags[]'
之后同样用 xargs docker pull 拉取。
更可靠替代方案:用 skopeo 列出并同步
-
skopeo是专为容器镜像操作设计的工具,支持无本地 daemon 查看远程标签 - 列出所有标签(支持 Docker Hub 和多数私有 registry):
skopeo list-tags docker://nginx
- 批量拉取(配合 shell 循环):
skopeo list-tags docker://nginx | jq -r '.Tags[]' | xargs -I{} docker pull nginx:{}
优势:不依赖 Docker daemon、支持更多 registry 协议、自动处理分页与认证。
重要提醒
- 大量拉取会消耗带宽和磁盘空间,建议先用
head -n 10预览标签再决定范围 - 部分镜像(尤其官方镜像)含数百标签(如
python),全量拉取可能耗时数小时 -
docker pull本身不支持通配符(如nginx:*)或批量标签语法,任何“一键全拉”都是脚本封装
相关文章
- qq邮箱网页版登录入口-QQ邮箱网页版在线登录平台 07-22
- 漫蛙manwa2官方网页链接下载最新版v3.57-漫蛙manwa2官方网页链接下载 07-22
- 代号妖鬼中等幻神厉害吗 07-22
- 全民k歌网页版官网地址-全民k歌网页版破解版入口 07-22
- 2026火影忍者云游戏官网最新秒玩地址-火影忍者云游戏入口 07-22
- 7zip怎么下载安装 07-22