命令是干什么的
docker push --all-tags 把一个仓库下的多个本地标签一次性推送到远端,只在按仓库名(不带标签)调用时有效。常见用途是发布时同时维护精确版本号、次版本号与 latest 这几个标签:镜像只构建一次,用 docker tag 打上多个标签,再一条命令全部推送,减少逐个 push 造成的遗漏。
基本信息
| 用途 | 一次推送同一仓库下的全部本地标签 |
|---|---|
| 语法 | docker push --all-tags 仓库名(不带标签) |
| 前提 | 本地已对目标标签执行过 docker tag |
| 核对方式 | docker buildx imagetools inspect 镜像 |
| 注意 | 只会推送本地确实存在的标签 |
典型使用场景
- 发布流水线同时更新 1.4.2、1.4 与 latest 三个标签
- 多架构镜像构建完成后统一推送各标签
- 补推遗漏:上次发布少推了一个标签,重新做一次批量推送
- 镜像仓库迁移时批量同步本地标签
- 回滚后把旧版本标签重新推送覆盖滚动标签
多标签发布
多标签发布
docker build -t app/web:1.4.2 . # 只构建一次
docker tag app/web:1.4.2 registry.example.com/team/app/web:1.4.2
docker tag app/web:1.4.2 registry.example.com/team/app/web:1.4
docker tag app/web:1.4.2 registry.example.com/team/app/web:latest
docker push --all-tags registry.example.com/team/app/web # 一次推送三个标签
docker buildx imagetools inspect registry.example.com/team/app/web:1.4.2 # 核对远端摘要操作与作用
| 操作 | 作用 | 注意 |
|---|---|---|
| docker tag 本地镜像 远端标签 | 给同一镜像打多个标签 | 标签要包含完整仓库地址 |
| docker push --all-tags 仓库 | 推送该仓库下全部本地标签 | 只推本地存在的标签 |
| imagetools inspect | 查看远端标签与摘要 | 确认各标签指向同一镜像 |
| docker image ls | 核对本地标签清单 | 推送前先自查,避免推错仓库 |
多个标签指向同一份层数据时,远端只保存一份,不必担心重复占用存储空间。
批量推送不会提示「某个标签本地不存在」,少打了一个标签时命令依然成功,因此发布后要核对远端标签清单。
多个标签指向同一镜像时远端层数据只存一份,后续推送不会重复上传已存在的层,耗时主要取决于新增内容。