docker tag命令详解
1. 命令作用
docker tag 用于 为本地已有的 Docker 镜像创建一个新的标签(别名),本质上是为同一镜像内容添加一个额外的引用名称,不会复制或新建镜像层。
-
核心功能:
-
重命名镜像(保留原标签)
-
为镜像添加版本标签(如
:v1.0) -
准备镜像推送到私有仓库(如
registry.example.com/my-image)
-
2. 基本语法
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
-
SOURCE_IMAGE:原始镜像名称或 ID。 -
TARGET_IMAGE:新标签名称(可包含仓库地址、镜像名、标签)。 -
:TAG:可选,默认latest。
3. 使用示例
3.1 为镜像添加新标签
# 原始镜像
docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# ubuntu 20.04 abc123456789 2 weeks ago 72.8MB
# 添加新标签
docker tag ubuntu:20.04 my-ubuntu:v1
结果:
docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# ubuntu 20.04 abc123456789 2 weeks ago 72.8MB
# my-ubuntu v1 abc123456789 2 weeks ago 72.8MB # 相同IMAGE ID
3.2 重命名镜像(带仓库地址)
docker tag nginx:latest registry.example.com/team/nginx:prod
用途:准备推送到私有仓库。
3.3 基于镜像ID打标签
docker tag abc123456789 myapp:debug
4. 关键特性
-
无存储开销:新标签仅增加一个引用,不占用额外磁盘空间。
-
多标签共存:一个镜像可拥有多个标签。
-
删除独立性:删除一个标签不会影响其他标签或镜像层。
5. 常见使用场景
5.1 版本管理
docker tag myapp:latest myapp:1.2.0
5.2 推送到私有仓库
docker tag myapp:latest private.registry.com/project/myapp:latest
docker push private.registry.com/project/myapp:latest
5.3 镜像归档
docker tag legacy-app:old legacy-archive/old-app:2023
6. 注意事项
-
标签覆盖:若目标标签已存在,原有标签会被转移到新镜像(原镜像可能变为
<none>)。 -
仓库命名规范:
-
私有仓库需包含域名/IP:
registry.com/image:tag。 -
官方仓库可省略域名:
nginx:alpine。
-
-
删除悬空标签:
清理无用的<none>标签:docker image prune
7. 与其他命令协作
| 命令 | 协作场景 | 示例 |
|---|---|---|
docker build |
构建后打标签 | docker build -t myapp:1.0 . |
docker push |
推送到仓库前需正确标签 | docker tag myapp localhost:5000/myapp |
docker rmi |
删除标签不影响其他引用 | docker rmi myapp:old |
8. 完整工作流示例
# 1. 构建镜像
docker build -t myapp:latest .
# 2. 添加版本标签
docker tag myapp:latest myapp:1.2.0
# 3. 标记为私有仓库格式
docker tag myapp:1.2.0 registry.example.com/team/myapp:1.2.0
# 4. 推送
docker push registry.example.com/team/myapp:1.2.
郭慕荣博客园

浙公网安备 33010602011771号