# docker image tag

为指定的源镜像创建一个新标签（tag），指向目标镜像名称。

## 用法

```bash
docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
```

### 别名

* `docker tag`

完整的镜像名称格式如下：

```
[HOST[:PORT_NUMBER]/]PATH[:TAG]
```

各组成部分说明：

* **HOST**（可选）：镜像仓库的主机名。必须符合标准 DNS 规则，**不能包含下划线（\_）**。 如果未指定，则默认使用 Docker 官方公共仓库：`registry-1.docker.io`（即 `docker.io`）。
* **PORT\_NUMBER**（可选）：如果指定了主机名，可附加端口号，例如 `:5000`。
* **PATH**：由斜杠 `/` 分隔的路径组件。每个组件只能包含小写字母、数字以及以下分隔符：

  * 点（`.`）
  * 单下划线（`_`）或双下划线（`__`）
  * 一个或多个连字符（`-`） 组件**不能以分隔符开头或结尾**。

  大多数镜像仓库（包括 Docker Hub）仅支持**最多两级路径**（即 `namespace/repository` 格式）。

  对于 Docker 官方公共仓库，路径格式为：

  ```
  [NAMESPACE/]REPOSITORY
  ```

  * `NAMESPACE`（可选）：通常是用户名或组织名。
  * `REPOSITORY`（必需）：仓库名称。
  * 若未指定命名空间，默认使用 `library`（如 `ubuntu` 实际上是 `library/ubuntu`）。
* **TAG**（可选）：人类可读的镜像标识符，通常表示版本或变体。
  * 必须是有效的 ASCII 字符。
  * 可包含大小写字母、数字、下划线（`_`）、点（`.`）和连字符（`-`）。
  * **不能以点（`.`）或连字符（`-`）开头**。
  * 长度不得超过 **128 个字符**。
  * 如果未指定标签，默认使用 `latest`。

通过打标签，你可以对本地镜像进行分类、重命名，并准备将其推送到远程仓库。

## 示例

### 1. 为镜像 ID 打标签

将本地镜像 ID `0e5574283393` 标记为 `fedora/httpd:version1.0`：

```bash
$ docker tag 0e5574283393 fedora/httpd:version1.0
```

### 2. 为镜像名称打标签（无显式标签）

将本地镜像 `httpd`（即 `httpd:latest`）标记为 `fedora/httpd:version1.0`：

```bash
$ docker tag httpd fedora/httpd:version1.0
```

> 注意：由于未指定源标签，Docker 默认使用 `latest`。

### 3. 为带标签的镜像打新标签

将 `httpd:test` 镜像标记为 `fedora/httpd:version1.0.test`：

```bash
$ docker tag httpd:test fedora/httpd:version1.0.test
```

### 4. 为私有仓库打标签

要将镜像推送到私有仓库（而非 Docker Hub），必须在目标镜像名中包含仓库主机名和端口（如需要）：

```bash
$ docker tag 0e5574283393 myregistryhost:5000/fedora/httpd:version1.0
```

之后即可使用 `docker push myregistryhost:5000/fedora/httpd:version1.0` 推送该镜像。
