# 镜像标签与版本策略

URL: https://caijiao.org/docker/images/tagging
Source: docs/docker/images/tagging.md
Description: 本章节介绍 Docker 镜像标签和版本管理策略，包括语义化标签、latest 使用规范、标签管理与自动化发布策略，帮助团队高效管理镜像版本与持续交付。

Docker 镜像标签（Tag）是管理镜像版本和区分不同构建的重要工具。合理的标签与版本策略有助于版本控制、团队协作及生产环境部署的稳定性。

## 1. 镜像标签基础

- 每个镜像可以有一个或多个标签
- 标签格式：`repository:tag`，例如：

```text
myapp:1.0.0
nginx:latest
````

- 如果未指定标签，默认使用 `latest`

## 2. 标签命名规范与策略

### 2.1 语义化版本（SemVer）

- 格式：`MAJOR.MINOR.PATCH`，例如 `1.2.3`
- 便于识别兼容性和更新等级
- 示例：

```text
myapp:1.0.0  # 初始版本
myapp:1.1.0  # 新增功能，不破坏兼容
myapp:1.1.1  # 修复 bug
```

### 2.2 latest 标签

- 指向最新版本，适合测试和开发
- 在生产环境使用需谨慎，避免意外更新导致不兼容

### 2.3 环境标签

- 为不同部署环境指定标签，例如：

```text
myapp:dev
myapp:staging
myapp:prod
```

## 3. 标签管理操作

### 3.1 打标签

```bash
docker tag myapp:1.0 myregistry.com/myapp:1.0
docker tag myapp:1.0 myregistry.com/myapp:latest
```

### 3.2 推送镜像

```bash
docker push myregistry.com/myapp:1.0
docker push myregistry.com/myapp:latest
```

### 3.3 查看镜像标签

```bash
docker images myapp
```

### 3.4 删除镜像标签

```bash
docker rmi myregistry.com/myapp:oldtag
```

## 4. 最佳实践

- 对每次构建使用明确语义化版本
- 使用 `latest` 标签仅作开发或 CI 测试
- 结合 CI/CD 自动生成标签（如 Git commit hash 或构建号）
- 定期清理过期标签，保持 Registry 整洁

---

通过合理的标签和版本策略，可以确保 Docker 镜像在开发、测试和生产环境中稳定可靠，并提升团队协作效率。
