Skip to content

OpenAPI 镜像管理

本页介绍公共镜像查询,以及私有镜像的保存、列表、重命名和删除。请求均需携带 OpenAPI 鉴权 Header

私有镜像通过“将实例系统盘保存为镜像”创建。保存操作异步执行,接口成功返回后还需要轮询私有镜像状态。

接口列表

操作方法路径
查询公共镜像GET/api/image/publics_v2
查询私有镜像GET/api/image/privates
保存实例为私有镜像POST/api/instance/save_image_v2
重命名私有镜像PUT/api/image/update
删除私有镜像DELETE/api/image/delete/{image_id}

查询公共镜像

查询可用于创建实例的基础镜像。返回的 idimage_url 和 CUDA/软件信息用于构造创建实例请求。

http
GET /api/image/publics_v2
参数位置类型必填说明
labelQuerystring单个标签,例如 Pytorch;不支持一次传多个标签
nameQuerystring按镜像名称、软件名称或软件版本模糊搜索
shell
curl "$DAMODEL_API/api/image/publics_v2?label=Pytorch&name=CUDA" \
  -H "X-Damodel-Token: $DAMODEL_TOKEN" \
  -H "X-Damodel-Timestamp: $(date +%s)"

result 是镜像数组。

字段类型说明
idinteger镜像 ID,创建实例时作为 image_id
namestring镜像显示名称
image_urlstring镜像完整地址,创建实例时作为 image
descriptionstring镜像说明
softwaresstring[]预装软件
labelsstring[]镜像标签
sizestring镜像大小展示值
document_urlstring使用文档地址
iconstring镜像图标地址
create_time / update_timeintegerUnix 秒级时间戳

创建实例时,公共镜像参数示例:

json
{
  "image_id": 100,
  "image": "harbor-pro.damodel.net/model_library/pytorch:latest",
  "image_type": "public"
}

公开镜像的 image_type 也可以传字符串 "1",与 "public" 等价。

可能的错误

code_ncode说明
100002InvalidParameter标签或搜索参数不合法
100014InternalError公共镜像服务不可用

查询私有镜像

http
GET /api/image/privates
参数位置类型必填说明
pageQueryinteger页码
page_sizeQueryinteger每页数量
image_nameQuerystring按镜像名称搜索
image_statusQueryinteger0 创建中,1 已就绪
shell
curl "$DAMODEL_API/api/image/privates?page=1&page_size=20&image_status=1" \
  -H "X-Damodel-Token: $DAMODEL_TOKEN" \
  -H "X-Damodel-Timestamp: $(date +%s)"

私有镜像数组位于 result.data

字段类型说明
image_idinteger镜像 ID,更新、删除和创建实例时使用
image_uuidstring镜像 UUID
image_namestring镜像名称
image_tagstring镜像完整地址,创建实例时作为 image
image_statusinteger0 创建中,1 已就绪
push_progressinteger推送进度,范围 0~100
image_sizenumber镜像大小
original_imagestring创建该镜像时实例使用的原始镜像
regionstring镜像所属区域
create_time / updated_atintegerUnix 秒级时间戳
upperdir_files / upperdir_bytesinteger实例可写层文件数量和字节数

创建实例时,私有镜像参数示例:

json
{
  "image_id": 456,
  "image": "harbor-pro.damodel.net/user_private/user-image:v1",
  "image_type": "private"
}

私有镜像的 image_type 也可以传字符串 "2",与 "private" 等价。

image_type 仅接受 "1""2""public""private";其他值会返回 100002 InvalidParameter

创建实例时也可以只传完整 image URL,不传 image_idimage_type。URL 必须以 harbor-pro.damodel.net/ 开头;包含 model_library 时识别为公开镜像,包含 user_private 时识别为私有镜像。URL 还必须在镜像数据库中精确匹配,并通过启用状态或私有镜像权限/就绪状态校验。

保存实例为私有镜像

将当前实例系统盘异步保存为私有镜像。实例必须存在且属于当前 API Key 可操作的账号。

http
POST /api/instance/save_image_v2
Content-Type: application/json
字段类型必填说明
instance_uidstring要保存的实例 UID
image_namestring新镜像名称,同一账号下不能重复
shell
curl -X POST "$DAMODEL_API/api/instance/save_image_v2" \
  -H "Content-Type: application/json" \
  -H "X-Damodel-Token: $DAMODEL_TOKEN" \
  -H "X-Damodel-Timestamp: $(date +%s)" \
  -d '{
    "instance_uid": "71dbf455sdf1",
    "image_name": "pytorch-training-ready"
  }'

输出

字段类型说明
image_idinteger新创建的私有镜像 ID
image_tagstring镜像完整地址
json
{
  "result": {
    "image_id": 456,
    "image_tag": "harbor-pro.damodel.net/user_private/user-image:v1"
  },
  "response_metadata": {
    "request_id": "request-id",
    "trace_id": "trace-id",
    "action": "",
    "version": "",
    "service": "",
    "error": null
  }
}

接口返回后,通过私有镜像列表查询该 image_id

  • image_status=0:仍在创建;可以查看 push_progress
  • image_status=1:镜像已就绪,可以用于创建实例。

需关注

保存镜像会产生镜像存储费用。不要在已有镜像上频繁制作新镜像,也不要把大数据文件写入系统盘镜像。

保存镜像错误

code_ncode说明
100002InvalidParameter实例 UID 或镜像名称缺失
100038BalanceNotEnough主账号余额不足
130001ImageNameExisted镜像名称已存在
130002ImageUploading已有镜像正在创建
130003ImageSaveBusy保存请求过于频繁
130008ImageSaveCountExceeded当日保存次数已达上限
160003InstanceNotExistOrNoPrivilege实例不存在或无操作权限
100014InternalError镜像任务提交失败

重命名私有镜像

http
PUT /api/image/update
shell
curl -X PUT "$DAMODEL_API/api/image/update" \
  -H "Content-Type: application/json" \
  -H "X-Damodel-Token: $DAMODEL_TOKEN" \
  -H "X-Damodel-Timestamp: $(date +%s)" \
  -d '{
    "image_id": 456,
    "image_name": "pytorch-training-v2"
  }'

成功时 resultnull

删除私有镜像

http
DELETE /api/image/delete/{image_id}
shell
curl -X DELETE "$DAMODEL_API/api/image/delete/456" \
  -H "X-Damodel-Token: $DAMODEL_TOKEN" \
  -H "X-Damodel-Timestamp: $(date +%s)"

成功时 resultnull

需重点关注

删除镜像不可撤销。若镜像正在被创建中的实例使用,服务端会拒绝删除。

更新和删除常见错误

code_ncode说明
100002InvalidParameter镜像 ID 或镜像名称不合法
130001ImageNameExisted新镜像名称已存在
130004ImageNoPrivilege当前 API Key 无镜像操作权限
130005ImageUsedByInstance镜像正在被创建中的实例使用,不能删除
130006ImageNotFound镜像不存在或已删除
100014InternalError镜像服务调用失败