跳到主要内容
版本:v2.0.6

API

配置

如果客户端为 containerd,建议将 dfget.yaml 配置 proxy.defaultFilter 设置为 Expires&Signature&ns, 因为 containerd 会将 blobs 下载 URL 增加 ns query params, 参考代码 containerd/remotes/docker/resolver.go。 这样会导致生成的 Task ID 和预热的 Task ID 不相同,因此无法命中已经预热好的 Task ID。

# proxy service detail option
proxy:
defaultFilter: 'Expires&Signature&ns'

操作

用户使用 api 进行预热。首先发送 POST 请求创建预热任务。

如果 scheduler_cluster_ids 不存在,表示对所有 scheduler cluster 进行预热。

curl --location --request POST 'http://dragonfly-manager:8080/api/v1/jobs' \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "preheat",
"args": {
"type": "image",
"url": "https://index.docker.io/v2/library/redis/manifests/latest"
}
}'

命令行日志返回预热任务 ID。

{
"id": 1,
"task_id": "group_4d1ea00e-740f-4dbf-a47e-dbdc08eb33e1",
"type": "preheat",
"status": "PENDING",
"args": {
"filter": "",
"headers": null,
"type": "image",
"url": "https://index.docker.io/v2/library/redis/manifests/latest"
}
}

使用预热任务 ID 轮训查询任务是否成功。

curl --request GET 'http://dragonfly-manager:8080/api/v1/jobs/1'

如果返回预热任务状态为 SUCCESS,表示预热成功。

{
"id": 1,
"task_id": "group_4d1ea00e-740f-4dbf-a47e-dbdc08eb33e1",
"type": "preheat",
"status": "SUCCESS",
"args": {
"filter": "",
"headers": null,
"type": "image",
"url": "https://index.docker.io/v2/library/redis/manifests/latest"
}
}