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. 注意事项

  1. 标签覆盖:若目标标签已存在,原有标签会被转移到新镜像(原镜像可能变为 <none>)。

  2. 仓库命名规范:

    • 私有仓库需包含域名/IP:registry.com/image:tag

    • 官方仓库可省略域名:nginx:alpine

  3. 删除悬空标签:
    清理无用的 <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.
posted @ 2025-07-09 09:34  郭慕荣  阅读(699)  评论(0)    收藏  举报