docker tag 是什么
给已有镜像追加一个引用名。镜像本身用内容标识区分,标签只是指向它的可读名称,因此打标签不复制任何数据。最常见的两件事:为推送私有仓库补全仓库地址前缀,以及让同一个镜像同时拥有版本标签与便于取用的浮动标签。
基本信息
| 语法 | docker tag 源镜像[:标签] 目标名[:标签] |
|---|---|
| 命名规则 | 仓库路径必须全小写,不能含空格 |
| 数据影响 | 只新增引用,不复制层数据,占用几乎不变 |
| 不写标签时 | 默认使用 latest |
| 适用平台 | 所有 Docker Engine 与 Docker Desktop 环境 |
典型使用场景
- 推送私有仓库前补全地址:把本地简短名改成含注册表地址的完整引用
- 同时维护两个标签:发布版本号加一个便于取用的浮动标签
- 跨环境迁移:为同一镜像打上目标环境的命名空间,便于权限与策略区分
- 修正命名错误:构建时名字写错,补一个正确引用后重新推送
- 搭建本地测试集:把第三方镜像重命名到自己仓库下,统一管理来源
常用示例
常用示例
docker tag app/web:1.0 registry.example.com/team/app-web:1.0 # 补全仓库地址
docker tag app/web:1.0 app/web:latest # 同时维护浮动标签
docker images --filter 'reference=registry.example.com/team/*' # 核对结果
docker push registry.example.com/team/app-web:1.0 # 推送新引用命名各段读法
| 片段 | 含义 | 注意事项 |
|---|---|---|
| 注册表地址 | 镜像仓库的域名或主机端口 | 省略时按公共仓库解析,内部镜像别漏写 |
| 命名空间 | 仓库里的组织或项目名 | 通常与权限和配额挂钩 |
| 仓库名 | 镜像名称 | 多段路径用于表达层级,全部小写 |
| 标签 | 版本或环境标识 | 不写时默认最新,生产用具体版本 |
| 内容标识 | 镜像的唯一标识 | 多个标签指向同一标识即同一份数据 |
命名与发布的约定
- 版本号用语义化写法,便于排序与依赖表达
- 环境标识单独一段,方便按环境配置拉取权限
- 临时验证用带日期或提交号的标签,不与发布标签混用
- 浮动标签只在一个方向移动,指向最新稳定版本,不做回退操作
- 命名一旦发布就尽量不要改,改名会让下游引用失效
打标签之后要确认的
- 核对仓库地址是否为目标私有仓库,避免推送到公共命名空间
- 确认目标标签尚未被使用,覆盖远端标签会影响正在使用它的部署
- 推送后确认远端摘要与本地一致,确保传输完整
- 记录本次发布使用的具体标签与摘要,回滚时才有依据
- 清理不再需要的临时标签,避免本地与远端标签数量失控
标签只是引用,删除某个标签不等于删除镜像数据;只有当所有标签都被删除且没有容器引用时,镜像本体才会被回收。
名称里带大写字母会直接报错。仓库命名统一小写,能避免后续改名、重新推送、更新编排文件这一串返工。
常见组合动作
- 构建后立刻打上版本标签与仓库前缀,再推送,避免中途漏步骤
- 发布完成后核对远端标签列表,确认版本标签与浮动标签都到位
- 回滚时把指定旧版本标签重新指向修复镜像,比改部署文件更快
- 清理临时标签前先确认没有部署引用它,避免拉取失败
- 多环境发布用同一镜像配不同标签,减少重复构建带来的差异