---
url: /zh/artifact/docker-model.md
description: |
  介绍如何登录和使用 CNB Docker Model 制品库， 包括制品路径规则、推送和拉取 AI 模型制品的方法。
---
## 登录

使用 CNB 访问令牌登录。获取 `CNB_TOKEN` 请参考 [创建访问令牌](./intro.md#创建访问令牌)。

```bash
docker login -u cnb -p ${CNB_TOKEN} docker-model.cnbprod.alpha.qq.com
```

> **注意**：Docker Model 制品库仅接受 Docker Model 制品的推送。
> 容器镜像、Helm Chart 等其它类型的制品推送到 Docker Model 地址会被拒绝，
> 请确认推送目标地址与制品类型匹配（详见 [制品类型准入限制](./intro.md#制品类型准入限制)）。

## 制品路径规则

发布制品到仓库时，支持两种命名规则：

* **同名制品**：制品路径与仓库路径一致，如 `docker-model.cnbprod.alpha.qq.com/${CNB_REPO_SLUG_LOWERCASE}`
* **非同名制品**：仓库路径作为命名空间，
  制品路径 = 仓库路径/制品名称，如 `docker-model.cnbprod.alpha.qq.com/${CNB_REPO_SLUG_LOWERCASE}/<IMAGE_NAME>`

## 推送制品

### 本地命令行

```bash
docker model package --gguf model_file_path \
  --push docker-model.cnbprod.alpha.qq.com/${CNB_REPO_SLUG_LOWERCASE}:latest

# 非同名制品
docker model package --gguf model_file_path \
  --push docker-model.cnbprod.alpha.qq.com/${CNB_REPO_SLUG_LOWERCASE}/<IMAGE_NAME>:latest
```

### 云原生构建

同名制品的推送示例：

```yaml title=".cnb.yml"
main:
  push:
    - services:
        - docker
      stages:
        - name: docker model package & push
          # model_file_path 为模型文件路径，如 ./model.gguf
          # <tag> 为制品版本号，如 latest 或具体版本
          script: docker model package --gguf model_file_path --push ${CNB_DOCKER_MODEL_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:<tag>
```

非同名制品将路径补充为 `仓库路径/制品名称` 即可：

```bash
docker model package --gguf model_file_path --push ${CNB_DOCKER_MODEL_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/<IMAGE_NAME>:<tag>
```

### 云原生开发

```bash
docker model package --gguf model_file_path \
  --push docker-model.cnbprod.alpha.qq.com/${CNB_REPO_SLUG_LOWERCASE}:latest

# 非同名制品
docker model package --gguf model_file_path \
  --push docker-model.cnbprod.alpha.qq.com/${CNB_REPO_SLUG_LOWERCASE}/<IMAGE_NAME>:latest
```

## 拉取制品

```bash
docker model pull docker-model.cnbprod.alpha.qq.com/<ARTIFACT_PATH>:latest
```
