容器服务 API

Zun 基本 URL

本文档其余所有 API 调用都需要使用 OpenStack Identity 服务进行身份验证。它们还需要一个从 Identity token 中提取的类型为 containerurl。这将是构建完整路径时,所有以下调用将附加到的根 URL。

请注意,如果使用 OpenStack Identity 服务 API v2,url 可以通过 endpoint catalog 中的 adminURLinternalURLpublicURL 表示。在 Identity 服务 API v3 中,url 使用包含 admininternalpublic 的字段 interface 表示。

例如,如果 urlhttp://my-zun-url.org/zun/v1,那么对于 /containers 的完整 API 调用是 http://my-zun-url.org/zun/v1/containers

根据部署情况,容器服务 URL 可能是 http 或 https,自定义端口,自定义路径,并包含您的项目 ID。了解部署 URL 的唯一方法是使用服务目录。容器服务 URL 绝不能在应用程序中硬编码,即使预计它们仅在单个站点上工作。它应始终从 Identity token 中发现。

因此,在本文档的其余部分,我们将使用简写,其中 GET /containers 实际上意味着 GET {your_zun_url}/containers

管理胶囊 (Pods)

列出、创建、显示详细信息和删除胶囊。

胶囊是在主机上可以运行的容器集合。基本上是 Zun 实现的 Kubernetes Pod。胶囊内的容器共享 Neutron 网络和 Cinder 卷。

POST
/v1/capsules/

创建新的胶囊

创建新的胶囊。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

胶囊模板

名称

入参

类型

描述

template

body

对象

胶囊的模板。

kind

body

字符串

表示此对象类型的字符串值。其值为 capsule

metadata (可选)

body

对象

胶囊元数据,采用键值格式。键可以是 namelabelsannotations。示例格式如下

"metadata": {
    "labels": {"app": "web"},
    "name": "demo",
    "annotations": {"key1": "value1"}
}

metadata.labels (可选)

body

对象

添加到胶囊的标签。

metadata.name (可选)

body

字符串

胶囊的名称。

metadata.annotations (可选)

body

对象

添加到胶囊的注释。Annotations 是存储在资源中的非结构化键值映射,可以由外部工具设置和检索任意元数据。

spec

body

对象

胶囊期望行为的规范。请参阅 胶囊规范

胶囊规范

名称

入参

类型

描述

containers

body

数组

一个 容器 对象列表。

initContainers (可选)

body

数组

一个 init 容器 对象列表。

restartPolicy (可选)

body

字符串

胶囊内所有容器的重启策略。其值可以是 AlwaysOnFailureNever

volumes (可选)

body

数组

一个 列表,可以被此胶囊中的容器挂载。

胶囊容器

名称

入参

类型

描述

image

body

字符串

镜像的名称或 ID。

command (可选)

body

数组

容器的命令。

args (可选)

body

数组

命令的参数。

env (可选)

body

对象

要在容器中设置的环境变量。

name (可选)

body

字符串

容器的名称。

ports (可选)

body

数组

从容器暴露的端口列表。每个条目都是一个字典,必须包含一个 containerPort 键。可选地,它可以包含一个 protocol 键。示例格式如下

"ports": [{
    "protocol": "TCP",
    "containerPort": 80
}]

ports.containerPort (可选)

body

整数

容器中要打开的端口。其值必须是 165535 之间的数字。

ports.protocol (可选)

body

字符串

协议。其值可以是 TCPUDP。默认值为 TCP

resources (可选)

body

对象

此容器所需的计算资源。支持的计算资源是 cpumemory。示例格式如下

"resources": {
    "requests": {
        "cpu": 0.1,
        "memory": 128
}}

resources.cpu (可选)

body

float

虚拟 CPU 的数量。

resources.memory (可选)

body

整数

以 MiB 为单位的内存量。

volumeMounts (可选)

body

数组

要挂载到容器文件系统中的卷列表。每个条目必须包含一个 name 键和一个 mountPath 键。示例格式如下

"volumeMounts": [{
    "mountPath": "/work-dir",
    "name": "workdir"
}]

volumeMounts.name (可选)

body

字符串

卷的名称

volumeMounts.mountPath (可选)

body

字符串

应在容器中挂载卷的路径。

workDir (可选)

body

字符串

要在其中运行命令的工作目录。

胶囊卷

名称

入参

类型

描述

name

body

字符串

卷的名称。

cinder

body

对象

Cinder 卷配置。有两种选项可以配置卷:使用现有卷或动态创建卷。要指定现有卷,请将 volumeID 键设置为 Cinder 卷的 UUID 作为值。例如

"cinder": {
    "volumeID": "9e5b5387-ed3b-4b9d-ab1e-0ce1e9dd86a1",
    "autoRemove": false
}

要创建卷,请将 size 键设置为其大小作为值。例如

"cinder": {
    "size": 1,
    "autoRemove": true
}

对于决定删除卷时是否清理,autoRemove 键是可选的。

cinder.volumeID (可选)

body

字符串

Cinder 卷的 UUID。

cinder.size (可选)

body

字符串

Cinder 卷的大小。

cinder.autoRemove (可选)

body

字符串

在删除胶囊时是否删除卷。

请求示例

{
    "template": {
        "kind": "capsule",
        "spec": {
            "restartPolicy": "Always",
            "initContainers": [
                {
                    "workDir": "/",
                    "command": [
                        "wget",
                        "-O",
                        "/work-dir/index.html",
                        "https://openstack.org/"
                    ],
                    "env": {
                        "ENV1": "env1-value1"
                    },
                    "image": "busybox",
                    "volumeMounts": [
                        {
                            "mountPath": "/work-dir",
                            "name": "workdir"
                        }
                    ],
                    "resources": {
                        "requests": {
                            "cpu": 0.1,
                            "memory": 128
                        }
                    }
                }
            ],
            "containers": [
                {
                    "workDir": "/",
                    "env": {
                        "ENV2": "env2-value"
                    },
                    "image": "nginx",
                    "volumeMounts": [
                        {
                            "mountPath": "/usr/share/nginx/html",
                            "name": "workdir"
                        }
                    ],
                    "ports": [
                        {
                            "protocol": "TCP",
                            "containerPort": 80
                        }
                    ],
                    "resources": {
                        "requests": {
                            "cpu": 0.5,
                            "memory": 512
                        }
                    }
                }
            ],
            "volumes": [
                {
                    "cinder": {
                        "size": 1
                    },
                    "name": "workdir"
                }
            ]
        },
        "metadata": {
            "labels": {
                "app": "web"
            },
            "name": "demo",
            "annotations": {
                "key1": "value1"
            },
        }
    }
}

响应

胶囊

名称

入参

类型

描述

addresses

body

字符串

胶囊的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

containers

body

对象

属于胶囊的 容器 列表。胶囊中必须至少有一个容器。

cpu

body

float

胶囊的虚拟 CPU 数量。

memory

body

字符串

胶囊的内存大小,以 MiB 为单位。

uuid

body

字符串

胶囊的 UUID。

name

body

字符串

胶囊的名称。

labels

body

对象

胶囊的标签。

annotations

body

对象

胶囊的注释。Annotations 是存储在资源中的非结构化键值映射,可以由外部工具设置和检索任意元数据。

restart_policy

body

对象

胶囊内所有容器的重启策略。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

user_id

body

字符串

拥有胶囊的用户的用户 ID。

project_id

body

字符串

此胶囊所属项目的 UUID。

status

body

字符串

胶囊的当前状态。

status_reason

body

字符串

胶囊当前状态的原因。

links

body

字符串

相对链接列表。

胶囊容器

名称

入参

类型

描述

addresses

body

字符串

容器的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

image

body

字符串

镜像的名称或 ID。

labels

body

对象

容器标签的映射。

disk

body

整数

容器的磁盘大小,以 GiB 为单位。

security_groups

body

字符串

要添加到容器的安全组。

task_state

body

字符串

容器的当前任务。

user_id

body

字符串

拥有容器的用户的用户 ID。

uuid

body

字符串

容器的 UUID。

hostname

body

字符串

容器的主机名。

environment

body

对象

要在容器中设置的环境变量。

memory

body

整数

容器的内存大小,以 MiB 为单位。

project_id

body

数组

此容器所属项目的 UUID。

status

body

字符串

容器的当前状态。

environment

body

对象

要在容器中设置的环境变量。

workdir

body

字符串

要在其中运行命令的工作目录。

healthcheck

body

对象

用于检查容器是否正常的测试命令。支持四个参数

  • cmd: 运行以检查健康的命令。

  • interval: 运行检查之间的秒数。

  • retries: 连续失败次数,需要报告不健康。

  • timeout: 允许一个检查运行的最大秒数。

auto_remove

body

布尔值

在容器进程退出时启用守护程序侧的自动删除。

auto_heal

body

布尔值

Docker 中不存在容器的自动修复标志。

cpu_policy

body

字符串

容器的 CPU 策略。其值可以是 dedicatedshared

image_driver

body

字符串

用于拉取容器镜像的镜像驱动程序。

status_detail

body

字符串

容器的当前状态详细信息。

status_reason

body

字符串

容器当前状态的原因。

name

body

字符串

容器的名称。

restart_policy

body

对象

重启策略,用于在容器退出时应用。它必须包含一个 Name 键,其允许的值为 noon-failurealwaysunless-stopped。可选地,它可以包含一个 MaximumRetryCount 键,其值为整数。

cpu

body

float

容器的虚拟 CPU 数量。

command

body

数组

向容器发送命令。

registry_id

body

字符串

容器使用的镜像注册表的 ID。

ports

body

字符串

容器上暴露的端口。

interactive

body

布尔值

即使未附加,也要保持 STDIN 打开。

tty

body

布尔值

是否为容器分配一个 TTY。

响应示例

{
    "status": "Creating",
    "user_id": "c863491f37984815bf740836c86e9310",
    "uuid": "a4bad62a-f3ba-4b14-b2ab-2af470a2f32c",
    "links": [
        {
            "href": "http://openstack.example.com/v1/capsules/a4bad62a-f3ba-4b14-b2ab-2af470a2f32c",
            "rel": "self"
        },
        {
            "href": "http://openstack.example.com/capsules/a4bad62a-f3ba-4b14-b2ab-2af470a2f32c",
            "rel": "bookmark"
        }
    ],
    "created_at": "2019-05-18 21:02:12.304734",
    "labels": {
        "app": "web"
    },
    "annotations": {
        "key1": "value1"
    },
    "restart_policy": {
        "MaximumRetryCount": "0",
        "Name": "always"
    },
    "updated_at": null,
    "name": "demo",
    "memory": "512",
    "project_id": "493378c3aa3e4315a39fe8b125f9eaaa",
    "status_reason": null,
    "cpu": 0.5,
    "containers": [
        {
            "addresses": {},
            "image": "nginx",
            "labels": {},
            "disk": 0,
            "security_groups": [],
            "task_state": null,
            "user_id": "c863491f37984815bf740836c86e9310",
            "uuid": "6df062d2-293c-4c35-af81-22d27ce47887",
            "hostname": null,
            "environment": {
                "ENV2": "env2-value"
            },
            "memory": "512",
            "project_id": "493378c3aa3e4315a39fe8b125f9eaaa",
            "status": "Creating",
            "workdir": "/",
            "healthcheck": {},
            "auto_remove": false,
            "auto_heal": false,
            "cpu_policy": "shared",
            "image_driver": null,
            "status_detail": null,
            "status_reason": null,
            "name": "capsule-demo-pi-9",
            "restart_policy": {
                "MaximumRetryCount": "10",
                "Name": "on-failure"
            },
            "cpu": 0.5,
            "command": [],
            "registry_id": null,
            "ports": [],
            "interactive": true
        }
    ],
    "addresses": null
}
GET
/v1/capsules/

列出所有胶囊

列出 Zun 中的所有可用胶囊。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

此请求在请求主体中不包含任何内容。

响应

胶囊

名称

入参

类型

描述

addresses

body

字符串

胶囊的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

containers

body

对象

属于胶囊的 容器 列表。胶囊中必须至少有一个容器。

cpu

body

float

胶囊的虚拟 CPU 数量。

memory

body

字符串

胶囊的内存大小,以 MiB 为单位。

uuid

body

字符串

胶囊的 UUID。

name

body

字符串

胶囊的名称。

labels

body

对象

胶囊的标签。

annotations

body

对象

胶囊的注释。Annotations 是存储在资源中的非结构化键值映射,可以由外部工具设置和检索任意元数据。

restart_policy

body

对象

胶囊内所有容器的重启策略。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

user_id

body

字符串

拥有胶囊的用户的用户 ID。

project_id

body

字符串

此胶囊所属项目的 UUID。

status

body

字符串

胶囊的当前状态。

status_reason

body

字符串

胶囊当前状态的原因。

links

body

字符串

相对链接列表。

胶囊容器

名称

入参

类型

描述

addresses

body

字符串

容器的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

image

body

字符串

镜像的名称或 ID。

labels

body

对象

容器标签的映射。

disk

body

整数

容器的磁盘大小,以 GiB 为单位。

security_groups

body

字符串

要添加到容器的安全组。

task_state

body

字符串

容器的当前任务。

user_id

body

字符串

拥有容器的用户的用户 ID。

uuid

body

字符串

容器的 UUID。

hostname

body

字符串

容器的主机名。

environment

body

对象

要在容器中设置的环境变量。

memory

body

整数

容器的内存大小,以 MiB 为单位。

project_id

body

数组

此容器所属项目的 UUID。

status

body

字符串

容器的当前状态。

environment

body

对象

要在容器中设置的环境变量。

workdir

body

字符串

要在其中运行命令的工作目录。

healthcheck

body

对象

用于检查容器是否正常的测试命令。支持四个参数

  • cmd: 运行以检查健康的命令。

  • interval: 运行检查之间的秒数。

  • retries: 连续失败次数,需要报告不健康。

  • timeout: 允许一个检查运行的最大秒数。

auto_remove

body

布尔值

在容器进程退出时启用守护程序侧的自动删除。

auto_heal

body

布尔值

Docker 中不存在容器的自动修复标志。

cpu_policy

body

字符串

容器的 CPU 策略。其值可以是 dedicatedshared

image_driver

body

字符串

用于拉取容器镜像的镜像驱动程序。

status_detail

body

字符串

容器的当前状态详细信息。

status_reason

body

字符串

容器当前状态的原因。

name

body

字符串

容器的名称。

restart_policy

body

对象

重启策略,用于在容器退出时应用。它必须包含一个 Name 键,其允许的值为 noon-failurealwaysunless-stopped。可选地,它可以包含一个 MaximumRetryCount 键,其值为整数。

cpu

body

float

容器的虚拟 CPU 数量。

command

body

数组

向容器发送命令。

registry_id

body

字符串

容器使用的镜像注册表的 ID。

ports

body

字符串

容器上暴露的端口。

interactive

body

布尔值

即使未附加,也要保持 STDIN 打开。

tty

body

布尔值

是否为容器分配一个 TTY。

响应示例

{
    "capsules": [
        {
            "status": "Running",
            "user_id": "c863491f37984815bf740836c86e9310",
            "uuid": "a4bad62a-f3ba-4b14-b2ab-2af470a2f32c",
            "links": [
                {
                    "href": "http://openstack.example.com/v1/capsules/a4bad62a-f3ba-4b14-b2ab-2af470a2f32c",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/capsules/a4bad62a-f3ba-4b14-b2ab-2af470a2f32c",
                    "rel": "bookmark"
                }
            ],
            "created_at": "2019-05-18 21:02:12",
            "labels": {
                "app": "web"
            },
            "annotations": {
                "key1": "value1"
            },
            "restart_policy": {
                "MaximumRetryCount": "0",
                "Name": "always"
            },
            "updated_at": "2019-05-18 21:02:30",
            "name": "demo",
            "memory": "512",
            "project_id": "493378c3aa3e4315a39fe8b125f9eaaa",
            "status_reason": null,
            "cpu": 0.5,
            "containers": [
                {
                    "addresses": {},
                    "image": "nginx",
                    "labels": {},
                    "disk": 0,
                    "security_groups": [],
                    "task_state": null,
                    "user_id": "c863491f37984815bf740836c86e9310",
                    "uuid": "6df062d2-293c-4c35-af81-22d27ce47887",
                    "hostname": "dce8bbff358a",
                    "environment": {
                        "ENV2": "env2-value"
                    },
                    "memory": "512",
                    "project_id": "493378c3aa3e4315a39fe8b125f9eaaa",
                    "status": "Running",
                    "workdir": "/",
                    "healthcheck": {},
                    "auto_remove": false,
                    "auto_heal": false,
                    "cpu_policy": "shared",
                    "image_driver": null,
                    "status_detail": null,
                    "status_reason": null,
                    "name": "capsule-demo-pi-9",
                    "restart_policy": {
                        "MaximumRetryCount": "10",
                        "Name": "on-failure"
                    },
                    "cpu": 0.5,
                    "command": [
                        "nginx",
                        "-g",
                        "daemon off;"
                    ],
                    "registry_id": null,
                    "ports": [
                        80
                    ],
                    "interactive": true,
                    "tty": true
                }
            ],
            "addresses": {
                "86f0b398-414f-4e6a-b569-21d3452eb769": [
                    {
                        "subnet_id": "48bdf0e5-49d0-4668-9dcf-c47ea69fb4c3",
                        "version": 4,
                        "preserve_on_delete": false,
                        "addr": "10.0.0.21",
                        "port": "d19617f2-6984-4c00-a914-da02b39fdc52"
                    },
                    {
                        "subnet_id": "54f53848-66fc-4697-ab31-a97579691312",
                        "version": 6,
                        "preserve_on_delete": false,
                        "addr": "fddf:ec1e:34b4:0:f816:3eff:feb3:6c0e",
                        "port": "d19617f2-6984-4c00-a914-da02b39fdc52"
                    }
                ]
            }
        }
    ],
    "next": null
}
GET
/v1/capsules/{capsule_ident}

显示胶囊的详细信息

获取 Zun 中胶囊的所有信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

capsule_ident

路径

字符串

Zun 中胶囊的 UUID 或名称。

响应

胶囊

名称

入参

类型

描述

addresses

body

字符串

胶囊的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

containers

body

对象

属于胶囊的 容器 列表。胶囊中必须至少有一个容器。

cpu

body

float

胶囊的虚拟 CPU 数量。

memory

body

字符串

胶囊的内存大小,以 MiB 为单位。

uuid

body

字符串

胶囊的 UUID。

name

body

字符串

胶囊的名称。

labels

body

对象

胶囊的标签。

annotations

body

对象

胶囊的注释。Annotations 是存储在资源中的非结构化键值映射,可以由外部工具设置和检索任意元数据。

restart_policy

body

对象

胶囊内所有容器的重启策略。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

user_id

body

字符串

拥有胶囊的用户的用户 ID。

project_id

body

字符串

此胶囊所属项目的 UUID。

status

body

字符串

胶囊的当前状态。

status_reason

body

字符串

胶囊当前状态的原因。

links

body

字符串

相对链接列表。

胶囊容器

名称

入参

类型

描述

addresses

body

字符串

容器的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

image

body

字符串

镜像的名称或 ID。

labels

body

对象

容器标签的映射。

disk

body

整数

容器的磁盘大小,以 GiB 为单位。

security_groups

body

字符串

要添加到容器的安全组。

task_state

body

字符串

容器的当前任务。

user_id

body

字符串

拥有容器的用户的用户 ID。

uuid

body

字符串

容器的 UUID。

hostname

body

字符串

容器的主机名。

environment

body

对象

要在容器中设置的环境变量。

memory

body

整数

容器的内存大小,以 MiB 为单位。

project_id

body

数组

此容器所属项目的 UUID。

status

body

字符串

容器的当前状态。

environment

body

对象

要在容器中设置的环境变量。

workdir

body

字符串

要在其中运行命令的工作目录。

healthcheck

body

对象

用于检查容器是否正常的测试命令。支持四个参数

  • cmd: 运行以检查健康的命令。

  • interval: 运行检查之间的秒数。

  • retries: 连续失败次数,需要报告不健康。

  • timeout: 允许一个检查运行的最大秒数。

auto_remove

body

布尔值

在容器进程退出时启用守护程序侧的自动删除。

auto_heal

body

布尔值

Docker 中不存在容器的自动修复标志。

cpu_policy

body

字符串

容器的 CPU 策略。其值可以是 dedicatedshared

image_driver

body

字符串

用于拉取容器镜像的镜像驱动程序。

status_detail

body

字符串

容器的当前状态详细信息。

status_reason

body

字符串

容器当前状态的原因。

name

body

字符串

容器的名称。

restart_policy

body

对象

重启策略,用于在容器退出时应用。它必须包含一个 Name 键,其允许的值为 noon-failurealwaysunless-stopped。可选地,它可以包含一个 MaximumRetryCount 键,其值为整数。

cpu

body

float

容器的虚拟 CPU 数量。

command

body

数组

向容器发送命令。

registry_id

body

字符串

容器使用的镜像注册表的 ID。

ports

body

字符串

容器上暴露的端口。

interactive

body

布尔值

即使未附加,也要保持 STDIN 打开。

tty

body

布尔值

是否为容器分配一个 TTY。

响应示例

{
    "status": "Running",
    "user_id": "c863491f37984815bf740836c86e9310",
    "uuid": "a4bad62a-f3ba-4b14-b2ab-2af470a2f32c",
    "links": [
        {
            "href": "http://openstack.example.com/v1/capsules/a4bad62a-f3ba-4b14-b2ab-2af470a2f32c",
            "rel": "self"
        },
        {
            "href": "http://openstack.example.com/capsules/a4bad62a-f3ba-4b14-b2ab-2af470a2f32c",
            "rel": "bookmark"
        }
    ],
    "created_at": "2019-05-18 21:02:12",
    "labels": {
        "app": "web"
    },
    "annotations": {
        "key1": "value1"
    },
    "restart_policy": {
        "MaximumRetryCount": "0",
        "Name": "always"
    },
    "updated_at": "2019-05-18 21:02:30",
    "name": "demo",
    "memory": "512",
    "project_id": "493378c3aa3e4315a39fe8b125f9eaaa",
    "status_reason": null,
    "cpu": 0.5,
    "containers": [
        {
            "addresses": {},
            "image": "nginx",
            "labels": {},
            "disk": 0,
            "security_groups": [],
            "task_state": null,
            "user_id": "c863491f37984815bf740836c86e9310",
            "uuid": "6df062d2-293c-4c35-af81-22d27ce47887",
            "hostname": "dce8bbff358a",
            "environment": {
                "ENV2": "env2-value"
            },
            "memory": "512",
            "project_id": "493378c3aa3e4315a39fe8b125f9eaaa",
            "status": "Running",
            "workdir": "/",
            "healthcheck": {},
            "auto_remove": false,
            "auto_heal": false,
            "cpu_policy": "shared",
            "image_driver": null,
            "status_detail": null,
            "status_reason": null,
            "name": "capsule-demo-pi-9",
            "restart_policy": {
                "MaximumRetryCount": "10",
                "Name": "on-failure"
            },
            "cpu": 0.5,
            "command": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "registry_id": null,
            "ports": [80],
            "interactive": true,
            "tty": true
        }
    ],
    "addresses": {
        "86f0b398-414f-4e6a-b569-21d3452eb769": [
            {
                "subnet_id": "48bdf0e5-49d0-4668-9dcf-c47ea69fb4c3",
                "version": 4,
                "preserve_on_delete": false,
                "addr": "10.0.0.21",
                "port": "d19617f2-6984-4c00-a914-da02b39fdc52"
            },
            {
                "subnet_id": "54f53848-66fc-4697-ab31-a97579691312",
                "version": 6,
                "preserve_on_delete": false,
                "addr": "fddf:ec1e:34b4:0:f816:3eff:feb3:6c0e",
                "port": "d19617f2-6984-4c00-a914-da02b39fdc52"
            }
        ]
    }
}
DELETE
/v1/capsules/{capsule_ident}

删除一个胶囊

删除一个胶囊。

响应代码

成功

代码

原因

204 - No Content

服务器已通过删除资源来满足请求。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

capsule_ident

路径

字符串

Zun 中胶囊的 UUID 或名称。

响应

此请求不在响应主体中返回任何内容。

管理容器

列出、创建、显示详细信息、统计信息、更新、删除、启动、调整大小、停止、暂停、取消暂停、重启、重命名、提交、杀死、附加到容器、获取容器的存档、将存档放入容器,以及为指定的容器添加安全组,执行正在运行的容器中的命令,获取容器的日志,显示容器中正在运行的进程,调整 exec 使用的 tty 会话的大小,列出容器的操作和操作详细信息。

POST
/v1/containers/

创建新的容器

创建新的容器。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

Request

名称

入参

类型

描述

name (可选)

body

字符串

容器的名称。

image

body

字符串

镜像的名称或 ID。

command (可选)

body

字符串

向容器发送命令。

cpu (可选)

body

float

虚拟 CPU 的数量。

memory (可选)

body

整数

容器的内存大小,以 MiB 为单位。

workdir (可选)

body

字符串

要在其中运行命令的工作目录。

labels (可选)

body

对象

向容器添加标签映射。

environment (可选)

body

对象

要在容器中设置的环境变量。

restart_policy (可选)

body

对象

重启策略,用于在容器退出时应用。它必须包含一个 Name 键,其允许的值为 noon-failurealwaysunless-stopped。可选地,它可以包含一个 MaximumRetryCount 键,其值为整数。

interactive (可选)

body

布尔值

即使未附加,也要保持 STDIN 打开。

tty (可选)

body

布尔值

是否为容器分配一个 TTY。

image_driver (可选)

body

字符串

用于拉取容器镜像的镜像驱动程序。允许的值为 docker 从 Docker Hub 拉取镜像,以及 glance 从 Glance 拉取镜像。

security_groups (可选)

body

字符串

要添加到容器的安全组。

nets (可选)

body

对象

容器的网络列表。如果您没有指定 nets 参数,容器将附加到当前租户创建的唯一网络。要使用 NIC 为网络配置容器,请在 network 属性中指定网络的 UUID 或名称。要使用 NIC 为已存在的端口配置容器,请在 port 属性中指定端口 ID 或名称。

如果定义了多个网络,容器中网络的出现顺序不一定反映请求中给定的顺序。用户不应依赖设备顺序来推断有关其网络设备的信息。

runtime (可选)

body

字符串

用于创建容器的容器运行时工具。您可以使用默认运行时 runc 或任何其他配置为与 Docker 一起使用的运行时。

hostname (可选)

body

字符串

容器的主机名。

auto_remove (可选)

body

布尔值

在容器进程退出时,启用容器在守护进程侧的自动删除。

auto_heal (可选)

body

布尔值

Docker 中不存在容器的自动修复标志。

availability_zone (可选)

body

字符串

运行容器的可用区。通常,管理员用户将使用可用区将容器主机组织成逻辑组。可用区提供了一种物理隔离和冗余形式,与其他可用区隔离。例如,如果您的数据中心中的某些机架使用独立的电源,您可以将这些机架中的容器放在自己的可用区中。通过将资源隔离到可用区,您可以确保您的应用程序资源分布在不同的机器上,以在发生硬件或其他故障时实现高可用性。您可以通过调用 services API 来查看可用的可用区。

hints (可选)

body

字符串

发送到调度器的字典数据。

mounts (可选)

body

对象

一个字典数据列表,用于指定如何将卷挂载到容器中。容器将在创建时挂载这些卷。每个条目可以有一个 type 属性,用于指定卷类型。支持的卷类型是 volumebind。如果未指定此属性,则默认值为 volume。要使用预先存在的 Cinder 卷绑定挂载来配置容器,请在 source 属性中指定卷的 UUID 或名称。或者,可以动态创建 Cinder 卷。在这种情况下,需要在 size 属性中指定卷的大小。另一种选择是将用户提供的文件挂载到容器中。在这种情况下,type 属性应为“bind”,并且文件的内容包含在 source 属性中。这些卷将被挂载到容器的文件系统中,并且需要指定挂载卷的路径在 destination 属性中。

privileged (可选)

body

布尔值

为容器提供扩展权限。

healthcheck (可选)

body

对象

用于检查容器是否正常的测试命令。支持四个参数

  • cmd: 运行以检查健康的命令。

  • interval: 运行检查之间的秒数。

  • retries: 连续失败次数,需要报告不健康。

  • timeout: 允许一个检查运行的最大秒数。

exposed_ports (可选)

body

对象

一个字典数据列表,用于指定如何暴露容器的端口。如果指定此参数,Zun 将创建一个安全组,其中包含一组打开应暴露的端口的规则,并将安全组与容器关联。该值采用 {"<port>/<protocol>: {}"} 的形式,其中 port 是容器的端口,protocoltcpudp。如果未提供 protocol,则将使用 tcp

host (可选)

body

字符串

创建容器的主机名称。如果未找到具有给定主机名的主机,API 将返回 400。默认情况下,只有管理员才能指定它。

entrypoint (可选)

body

数组

覆盖镜像的默认 ENTRYPOINT 的入口点。

请求示例

{
    "environment":{
        "foo": "bar"
    },
    "labels":{
        "app": "hello"
    },
    "image": "ubuntu",
    "command": [
        "/bin/sh",
        "-c",
        "'echo hello'"
    ],
    "name": "test",
    "cpu": 2,
    "memory": 500,
    "workdir": "/home/ubuntu",
    "restart_policy":{
        "Name": "no",
        "MaximumRetryCount": 0
    },
    "interactive": false,
    "tty": false,
    "image_driver": "docker",
    "security_groups": [
        "default"
    ],
    "nets": [
        {
            "v4-fixed-ip": "",
            "network": "",
            "v6-fixed-ip": "",
            "port": "890699a9-4690-4bd6-8b70-3a9c1be77ecb"
        }
    ],
    "runtime": "runc",
    "hostname": "testhost",
    "auto_remove": false,
    "auto_heal": false,
    "availability_zone": "nova",
    "hints": {
        "foo": "bar"
    },
    "mounts": [
        {
            "source": "myvol",
            "destination": "/data"
        }
    ],
    "privileged": false,
    "healthcheck": {
        "cmd": "stat /etc/passwd || exit 1",
        "interval": 3,
        "retries": 2,
        "timeout": 5
    }
}

响应

名称

入参

类型

描述

links

body

数组

一个相对链接列表。包括 self 和 bookmark 链接。

addresses

body

字符串

容器的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

name

body

字符串

容器的名称。

image

body

字符串

镜像的名称或 ID。

labels

body

对象

容器标签的映射。

image_driver

body

字符串

用于拉取容器镜像的镜像驱动程序。

security_groups

body

字符串

要添加到容器的安全组。

command

body

数组

向容器发送命令。

cpu

body

float

容器的虚拟 CPU 数量。

memory

body

整数

容器的内存大小,以 MiB 为单位。

workdir

body

字符串

要在其中运行命令的工作目录。

environment

body

对象

要在容器中设置的环境变量。

restart_policy

body

对象

重启策略,用于在容器退出时应用。它必须包含一个 Name 键,其允许的值为 noon-failurealwaysunless-stopped。可选地,它可以包含一个 MaximumRetryCount 键,其值为整数。

interactive

body

布尔值

即使未附加,也要保持 STDIN 打开。

tty

body

布尔值

是否为容器分配一个 TTY。

uuid

body

UUID

资源的 UUID。

hostname

body

字符串

容器的主机名。

status

body

字符串

容器的当前状态。

status_detail

body

字符串

容器的当前状态详细信息。

host

body

字符串

服务的宿主机。

task_state

body

字符串

容器的当前任务。

status_reason

body

字符串

容器当前状态的原因。

ports

body

字符串

容器上暴露的端口。

auto_remove

body

布尔值

在容器进程退出时启用守护程序侧的自动删除。

auto_heal

body

布尔值

Docker 中不存在容器的自动修复标志。

privileged

body

布尔值

为容器提供扩展权限。

healthcheck

body

对象

用于检查容器是否正常的测试命令。支持四个参数

  • cmd: 运行以检查健康的命令。

  • interval: 运行检查之间的秒数。

  • retries: 连续失败次数,需要报告不健康。

  • timeout: 允许一个检查运行的最大秒数。

user_id

body

字符串

拥有容器的用户的用户 ID。

project_id

路径

字符串

多项目云中项目的 UUID。

disk

body

整数

容器的磁盘大小,以 GiB 为单位。

registry_id

body

字符串

容器使用的镜像注册表的 ID。

cpu_policy

body

字符串

容器的 CPU 策略。其值可以是 dedicatedshared

entrypoint

body

数组

覆盖镜像的默认 ENTRYPOINT 的入口点。

响应示例

{
    "addresses": null,
    "links": [
        {
            "href": "http://openstack.example.com/v1/containers/b0694d40-70af-4488-b104-10f66b593347",
            "rel": "self"
        },
        {
            "href": "http://openstack.example.com/containers/b0694d40-70af-4488-b104-10f66b593347",
            "rel": "bookmark"
        }
    ],
    "image": "ubuntu",
    "labels": {
        "app": "hello"
    },
    "security_groups": [
        "7e4eae5d-8b7b-4673-91b3-70dfb577e620"
    ],
    "uuid": "b0694d40-70af-4488-b104-10f66b593347",
    "environment": {
        "foo": "bar"
    },
    "memory": "500",
    "status": "Creating",
    "workdir": "/home/ubuntu",
    "status_detail": null,
    "host": null,
    "image_driver": "docker",
    "task_state": null,
    "status_reason": null,
    "name": "test",
    "restart_policy": {
        "MaximumRetryCount": "0",
        "Name": "no"
    },
    "ports": null,
    "command": [
        "/bin/sh",
        "-c",
        "'echo hello'"
    ],
    "cpu": 2.0,
    "interactive": false,
    "tty": false,
    "runtime": "runc",
    "hostname": "testhost",
    "auto_remove": false,
    "auto_heal": false,
    "privileged": false,
    "disk": 0,
    "user_id": "0a9cdb65757b4216935e27f333d1c48b",
    "project_id": "77a89a275765486d86144caad70825e4",
    "cpu_policy": "shared",
    "registry_id": null,
    "healthcheck": {
        "test": "stat /etc/passwd || exit 1",
        "interval": 3,
        "retries": 2,
        "timeout": 5
    }
}
GET
/v1/containers/

列出所有容器

列出 Zun 中的所有可用容器。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

名称

入参

类型

描述

name (可选)

查询

字符串

按名称过滤响应。

image (可选)

查询

字符串

按镜像过滤响应。

project_id (可选)

查询

字符串

按项目的 ID 过滤响应。

user_id (可选)

查询

字符串

按用户 ID 过滤响应。

memory (可选)

查询

整数

按 Mib 为单位的内存大小过滤响应。

host (可选)

查询

字符串

按主机名(字符串)过滤响应。

task_state (可选)

查询

字符串

按任务状态过滤响应。

status (可选)

查询

字符串

按容器的当前状态过滤响应。

auto_remove (可选)

查询

布尔值

根据它们是否在退出时自动删除进行过滤响应。

响应

名称

入参

类型

描述

containers

body

数组

Zun 中的所有容器列表。

links

body

数组

一个相对链接列表。包括 self 和 bookmark 链接。

addresses

body

字符串

容器的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

name

body

字符串

容器的名称。

image

body

字符串

镜像的名称或 ID。

labels

body

对象

容器标签的映射。

image_driver

body

字符串

用于拉取容器镜像的镜像驱动程序。

security_groups

body

字符串

要添加到容器的安全组。

command

body

数组

向容器发送命令。

cpu

body

float

容器的虚拟 CPU 数量。

memory

body

整数

容器的内存大小,以 MiB 为单位。

workdir

body

字符串

要在其中运行命令的工作目录。

environment

body

对象

要在容器中设置的环境变量。

restart_policy

body

对象

重启策略,用于在容器退出时应用。它必须包含一个 Name 键,其允许的值为 noon-failurealwaysunless-stopped。可选地,它可以包含一个 MaximumRetryCount 键,其值为整数。

interactive

body

布尔值

即使未附加,也要保持 STDIN 打开。

tty

body

布尔值

是否为容器分配一个 TTY。

uuid

body

UUID

资源的 UUID。

hostname

body

字符串

容器的主机名。

status

body

字符串

容器的当前状态。

status_detail

body

字符串

容器的当前状态详细信息。

host

body

字符串

服务的宿主机。

task_state

body

字符串

容器的当前任务。

status_reason

body

字符串

容器当前状态的原因。

ports

body

字符串

容器上暴露的端口。

privileged

body

布尔值

为容器提供扩展权限。

healthcheck

body

对象

用于检查容器是否正常的测试命令。支持四个参数

  • cmd: 运行以检查健康的命令。

  • interval: 运行检查之间的秒数。

  • retries: 连续失败次数,需要报告不健康。

  • timeout: 允许一个检查运行的最大秒数。

user_id

body

字符串

拥有容器的用户的用户 ID。

project_id

路径

字符串

多项目云中项目的 UUID。

disk

body

整数

容器的磁盘大小,以 GiB 为单位。

registry_id

body

字符串

容器使用的镜像注册表的 ID。

cpu_policy

body

字符串

容器的 CPU 策略。其值可以是 dedicatedshared

entrypoint

body

数组

覆盖镜像的默认 ENTRYPOINT 的入口点。

响应示例

{
    "containers": [
        {
            "addresses": {
                "2ede1821-1334-4e8b-b731-d3a82b41f42f": [{
                    "subnet_id": "a3162b3e-2f02-432e-a18c-78fe2774d026",
                    "version": 4,
                    "preserve_on_delete": false,
                    "addr": "172.24.4.3",
                    "port": "4b077255-9b4d-4068-b24f-b89594f870c2"
                    }, {
                    "subnet_id": "7ca0d3d5-eeef-489f-8a40-ccb00456628c",
                    "version": 6,
                    "preserve_on_delete": false,
                    "addr": "2001:db8::9",
                    "port": "4b077255-9b4d-4068-b24f-b89594f870c2"
                    }]
            },
            "links": [{
                "href": "http://openstack.example.com/v1/containers/b0694d40-70af-4488-b104-10f66b593347",
                "rel": "self"
                },
                {"href": "http://openstack.example.com/containers/b0694d40-70af-4488-b104-10f66b593347", "rel": "bookmark"}
            ],
            "image": "ubuntu",
            "labels": {
                "app": "hello"
            },
            "disk": 0,
            "security_groups": [],
            "user_id": "06c7fda2e74d4f5084bb8298bf8e313b",
            "uuid": "b0694d40-70af-4488-b104-10f66b593347",
            "hostname": "zun-sandbox-5812822d-6794-4839-85c0-1c01665c0d48",
            "environment": {
                "foo": "bar"
            },
            "memory": "500",
            "project_id": "2cc8ed7104ca427c873cad82411bcebb",
            "status": "Stopped",
            "workdir": "/home/ubuntu",
            "status_detail": "Exited(0) 10 mins ago ",
            "auto_remove": false,
            "auto_heal": false,
            "privileged": false,
            "host": "ubuntu",
            "image_driver": "docker",
            "task_state": null,
            "status_reason": null,
            "name": "test",
            "restart_policy": {
                "MaximumRetryCount": "0",
                "Name": "no"
            },
            "runtime": "runc",
            "ports": [],
            "command": [
                "/bin/sh",
                "-c",
                "'echo hello'"
            ],
            "cpu": 2.0,
            "interactive": false,
	    "tty": false,
            "cpu_policy": "shared",
            "registry_id": null,
            "healthcheck": {
                "test": "stat /etc/passwd || exit 1",
                "interval": 3,
                "retries": 2,
                "timeout": 5
            }
        }
    ],
    "next": null
}
GET
/v1/containers/{container_ident}

显示容器的详细信息

获取 Zun 中容器的所有信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

响应

名称

入参

类型

描述

links

body

数组

一个相对链接列表。包括 self 和 bookmark 链接。

addresses

body

字符串

容器的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

name

body

字符串

容器的名称。

image

body

字符串

镜像的名称或 ID。

labels

body

对象

容器标签的映射。

image_driver

body

字符串

用于拉取容器镜像的镜像驱动程序。

security_groups

body

字符串

要添加到容器的安全组。

command

body

数组

向容器发送命令。

cpu

body

float

容器的虚拟 CPU 数量。

memory

body

整数

容器的内存大小,以 MiB 为单位。

workdir

body

字符串

要在其中运行命令的工作目录。

environment

body

对象

要在容器中设置的环境变量。

restart_policy

body

对象

重启策略,用于在容器退出时应用。它必须包含一个 Name 键,其允许的值为 noon-failurealwaysunless-stopped。可选地,它可以包含一个 MaximumRetryCount 键,其值为整数。

interactive

body

布尔值

即使未附加,也要保持 STDIN 打开。

tty

body

布尔值

是否为容器分配一个 TTY。

uuid

body

UUID

资源的 UUID。

hostname

body

字符串

容器的主机名。

status

body

字符串

容器的当前状态。

status_detail

body

字符串

容器的当前状态详细信息。

host

body

字符串

服务的宿主机。

task_state

body

字符串

容器的当前任务。

status_reason

body

字符串

容器当前状态的原因。

ports

body

字符串

容器上暴露的端口。

privileged

body

布尔值

为容器提供扩展权限。

healthcheck

body

对象

用于检查容器是否正常的测试命令。支持四个参数

  • cmd: 运行以检查健康的命令。

  • interval: 运行检查之间的秒数。

  • retries: 连续失败次数,需要报告不健康。

  • timeout: 允许一个检查运行的最大秒数。

user_id

body

字符串

拥有容器的用户的用户 ID。

project_id

路径

字符串

多项目云中项目的 UUID。

disk

body

整数

容器的磁盘大小,以 GiB 为单位。

registry_id

body

字符串

容器使用的镜像注册表的 ID。

cpu_policy

body

字符串

容器的 CPU 策略。其值可以是 dedicatedshared

entrypoint

body

数组

覆盖镜像的默认 ENTRYPOINT 的入口点。

响应示例

{
    "addresses": {
        "c0c5f8ed-6654-4d25-b0de-c858b9f620be": [{
            "subnet_id": "a3162b3e-2f02-432e-a18c-78fe2774d026",
            "version": 4,
            "preserve_on_delete": false,
            "addr": "172.24.4.3",
            "port": "4b077255-9b4d-4068-b24f-b89594f870c2"
            }, {
            "subnet_id": "7ca0d3d5-eeef-489f-8a40-ccb00456628c",
            "version": 6,
            "preserve_on_delete": false,
            "addr": "2001:db8::9",
            "port": "4b077255-9b4d-4068-b24f-b89594f870c2"
            }]
    },
    "links": [{
        "href": "http://openstack.example.com/v1/containers/b0694d40-70af-4488-b104-10f66b593347",
        "rel": "self"
        },
        {"href": "http://openstack.example.com/containers/b0694d40-70af-4488-b104-10f66b593347", "rel": "bookmark"}
    ],
    "image": "ubuntu",
    "labels": {
        "app": "hello"
    },
    "disk": 0,
    "security_groups": [],
    "user_id": "06c7fda2e74d4f5084bb8298bf8e313b",
    "uuid": "b0694d40-70af-4488-b104-10f66b593347",
    "hostname": "zun-sandbox-5812822d-6794-4839-85c0-1c01665c0d48",
    "environment": {
        "foo": "bar"
    },
    "memory": "500",
    "project_id": "2cc8ed7104ca427c873cad82411bcebb",
    "status": "Stopped",
    "workdir": "/home/ubuntu",
    "auto_remove": false,
    "auto_heal": false,
    "privileged": false,
    "status_detail": "Exited(0) 8 mins ago ",
    "host": "ubuntu",
    "image_driver": "docker",
    "task_state": null,
    "status_reason": null,
    "name": "test",
    "restart_policy": {
        "MaximumRetryCount": "0",
        "Name": "no"
    },
    "ports": [],
    "command": [
        "/bin/sh",
        "-c",
        "'echo hello'"
    ],
    "cpu": 2.0,
    "interactive": false,
    "tty": false,
    "cpu_policy": "shared",
    "registry_id": null,
    "healthcheck": {
        "test": "stat /etc/passwd || exit 1",
        "interval": 3,
        "retries": 2,
        "timeout": 5
    }
}
DELETE
/v1/containers/{container_ident}

删除容器

删除处于 CreatingRunning 状态的容器,请请求 /v1/containers/{container_ident}?force=True。要停止并删除容器,请请求 /v1/containers/{container _ident}?stop=True

响应代码

成功

代码

原因

204 - No Content

服务器已通过删除资源来满足请求。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

force

查询

字符串

指定强制删除容器。

stop (可选)

查询

字符串

在删除容器之前是否停止容器。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/kill

杀死容器

杀死正在运行的容器。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

signal (可选)

查询

字符串

杀死容器的信号。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

GET
/v1/containers/{container_ident}/stats

显示容器的统计信息

显示容器的统计信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

响应

名称

入参

类型

描述

stats_info

body

dict

容器的统计信息,包括 cpu、内存、blk io 和 net io。

响应示例

{
    "CONTAINER": "test",
    "CPU %": 8.89,
    "MEM USAGE(MiB)": 7,
    "MEM LIMIT(MiB)": 16048,
    "MEM %": 0.0436191425723,
    "BLOCK I/O(B)": "12910592/0",
    "NET I/O(B)": "246614/648"
}
PATCH
/v1/containers/{container_ident}

更新容器信息

更新容器的一个或多个属性信息。目前只能更新 cpu、name 和 memory

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

memory

body

整数

容器的内存大小,以 MiB 为单位。

cpu

body

float

容器的虚拟 CPU 数量。

name

body

字符串

容器的名称。

请求示例

{
    "memory": "200",
    "cpu": "3",
    "name": "test_new"
}

响应

返回具有更新属性的新容器。

名称

入参

类型

描述

links

body

数组

一个相对链接列表。包括 self 和 bookmark 链接。

addresses

body

字符串

容器的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

name

body

字符串

容器的名称。

image

body

字符串

镜像的名称或 ID。

labels

body

对象

容器标签的映射。

image_driver

body

字符串

用于拉取容器镜像的镜像驱动程序。

security_groups

body

字符串

要添加到容器的安全组。

command

body

数组

向容器发送命令。

cpu

body

float

容器的虚拟 CPU 数量。

memory

body

整数

容器的内存大小,以 MiB 为单位。

workdir

body

字符串

要在其中运行命令的工作目录。

environment

body

对象

要在容器中设置的环境变量。

restart_policy

body

对象

重启策略,用于在容器退出时应用。它必须包含一个 Name 键,其允许的值为 noon-failurealwaysunless-stopped。可选地,它可以包含一个 MaximumRetryCount 键,其值为整数。

interactive

body

布尔值

即使未附加,也要保持 STDIN 打开。

tty

body

布尔值

是否为容器分配一个 TTY。

uuid

body

UUID

资源的 UUID。

hostname

body

字符串

容器的主机名。

status

body

字符串

容器的当前状态。

status_detail

body

字符串

容器的当前状态详细信息。

host

body

字符串

服务的宿主机。

task_state

body

字符串

容器的当前任务。

status_reason

body

字符串

容器当前状态的原因。

ports

body

字符串

容器上暴露的端口。

privileged

body

布尔值

为容器提供扩展权限。

healthcheck

body

对象

用于检查容器是否正常的测试命令。支持四个参数

  • cmd: 运行以检查健康的命令。

  • interval: 运行检查之间的秒数。

  • retries: 连续失败次数,需要报告不健康。

  • timeout: 允许一个检查运行的最大秒数。

user_id

body

字符串

拥有容器的用户的用户 ID。

project_id

路径

字符串

多项目云中项目的 UUID。

disk

body

整数

容器的磁盘大小,以 GiB 为单位。

registry_id

body

字符串

容器使用的镜像注册表的 ID。

cpu_policy

body

字符串

容器的 CPU 策略。其值可以是 dedicatedshared

entrypoint

body

数组

覆盖镜像的默认 ENTRYPOINT 的入口点。

响应示例

{
    "addresses": {
        "eb7a3ee0-ad55-417b-ba11-6c57b1dbd4c6": [
            {
                "subnet_id": "a3162b3e-2f02-432e-a18c-78fe2774d026",
                "version": 4,
                "preserve_on_delete": false,
                "addr": "172.24.4.3",
                "port": "4b077255-9b4d-4068-b24f-b89594f870c2"
            },
            {
                "subnet_id": "7ca0d3d5-eeef-489f-8a40-ccb00456628c",
                "version": 6,
                "preserve_on_delete": false,
                "addr": "2001:db8::9",
                "port": "4b077255-9b4d-4068-b24f-b89594f870c2"
            }
        ]
    },
    "links": [
        {
            "href": "http://openstack.example.com/v1/containers/b0694d40-70af-4488-b104-10f66b593347",
            "rel": "self"
        },
        {
            "href": "http://openstack.example.com/containers/b0694d40-70af-4488-b104-10f66b593347",
            "rel": "bookmark"
        }
    ],
    "image": "ubuntu",
    "labels": {
        "app": "hello"
    },
    "security_groups": [],
    "user_id": "06c7fda2e74d4f5084bb8298bf8e313b",
    "uuid": "b0694d40-70af-4488-b104-10f66b593347",
    "hostname": "zun-sandbox-5812822d-6794-4839-85c0-1c01665c0d48",
    "environment": {
        "foo": "bar"
    },
    "memory": "200",
    "status": "Stopped",
    "workdir": "/home/ubuntu",
    "status_detail": "Exited(0) 18 mins ago ",
    "host": "ubuntu",
    "image_driver": "docker",
    "task_state": null,
    "status_reason": null,
    "name": "test_new",
    "restart_policy": {
        "MaximumRetryCount": "0",
        "Name": "no"
    },
    "ports": [],
    "command": [
        "/bin/sh",
        "-c",
        "'echo hello'"
    ],
    "runtime": "runc",
    "cpu": 3.0,
    "interactive": false,
    "tty": false,
    "privileged": false,
    "project_id": "493378c3aa3e4315a39fe8b125f9eaaa",
    "disk": 0,
    "auto_remove": false,
    "auto_heal": false,
    "cpu_policy": "shared",
    "registry_id": null,
    "healthcheck": {
        "test": "stat /etc/passwd || exit 1",
        "interval": 3,
        "retries": 2,
        "timeout": 5
    }
}
POST
/v1/containers/{container_ident}/start

启动容器

启动容器。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/stop

停止容器

停止容器。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

timeout

查询

字符串

秒数,在对容器进行操作之前等待。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/pause

暂停容器

暂停容器。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/unpause

取消暂停容器

取消暂停容器。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/rebuild

重建容器

重建容器。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

image

body

字符串

镜像的名称或 ID。

image_driver

body

字符串

用于拉取容器镜像的镜像驱动程序。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/reboot

重启容器

重启容器。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

timeout

查询

字符串

秒数,在对容器进行操作之前等待。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/rename

重命名容器

重命名容器。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

new_name

查询

字符串

容器的新名称。

响应

名称

入参

类型

描述

links

body

数组

一个相对链接列表。包括 self 和 bookmark 链接。

addresses

body

字符串

容器的 IP 地址。这包括 ipv4 和/或 ipv6 地址。

name

body

字符串

容器的名称。

image

body

字符串

镜像的名称或 ID。

labels

body

对象

容器标签的映射。

image_driver

body

字符串

用于拉取容器镜像的镜像驱动程序。

security_groups

body

字符串

要添加到容器的安全组。

command

body

数组

向容器发送命令。

cpu

body

float

容器的虚拟 CPU 数量。

memory

body

整数

容器的内存大小,以 MiB 为单位。

workdir

body

字符串

要在其中运行命令的工作目录。

environment

body

对象

要在容器中设置的环境变量。

restart_policy

body

对象

重启策略,用于在容器退出时应用。它必须包含一个 Name 键,其允许的值为 noon-failurealwaysunless-stopped。可选地,它可以包含一个 MaximumRetryCount 键,其值为整数。

interactive

body

布尔值

即使未附加,也要保持 STDIN 打开。

tty

body

布尔值

是否为容器分配一个 TTY。

uuid

body

UUID

资源的 UUID。

hostname

body

字符串

容器的主机名。

status

body

字符串

容器的当前状态。

status_detail

body

字符串

容器的当前状态详细信息。

host

body

字符串

服务的宿主机。

task_state

body

字符串

容器的当前任务。

status_reason

body

字符串

容器当前状态的原因。

ports

body

字符串

容器上暴露的端口。

user_id

body

字符串

拥有容器的用户的用户 ID。

project_id

路径

字符串

多项目云中项目的 UUID。

disk

body

整数

容器的磁盘大小,以 GiB 为单位。

registry_id

body

字符串

容器使用的镜像注册表的 ID。

cpu_policy

body

字符串

容器的 CPU 策略。其值可以是 dedicatedshared

entrypoint

body

数组

覆盖镜像的默认 ENTRYPOINT 的入口点。

响应示例

{
    "addresses": {
        "f82824cf-bd0e-4c39-9450-3cf802ed262f": [
            {
                "version": 4,
                "addr": "172.24.4.3",
                "port": "4b077255-9b4d-4068-b24f-b89594f870c2"
            },
            {
                "version": 6,
                "addr": "2001:db8::9",
                "port": "4b077255-9b4d-4068-b24f-b89594f870c2"
            }
        ]
    },
    "links": [
        {
            "href": "http://openstack.example.com/v1/containers/b0694d40-70af-4488-b104-10f66b593347",
            "rel": "self"
        },
        {
            "href": "http://openstack.example.com/containers/b0694d40-70af-4488-b104-10f66b593347",
            "rel": "bookmark"
        }
    ],
    "image": "ubuntu",
    "labels": {
        "app": "hello"
    },
    "security_groups": [],
    "uuid": "b0694d40-70af-4488-b104-10f66b593347",
    "hostname": "zun-sandbox-5812822d-6794-4839-85c0-1c01665c0d48",
    "environment": {
        "foo": "bar"
    },
    "memory": "500",
    "status": "Stopped",
    "workdir": "/home/ubuntu",
    "status_detail": "Exited(0) 8 mins ago ",
    "host": "ubuntu",
    "image_driver": "docker",
    "task_state": null,
    "status_reason": null,
    "name": "test-new",
    "restart_policy": {
        "MaximumRetryCount": "0",
        "Name": "no"
    },
    "ports": [],
    "command": [
        "/bin/sh",
        "-c",
        "'echo hello'"
    ],
    "cpu": 2.0,
    "disk": 0,
    "project_id": "493378c3aa3e4315a39fe8b125f9eaaa",
    "user_id": "06c7fda2e74d4f5084bb8298bf8e313b",
    "auto_remove": false,
    "auto_heal": false,
    "cpu_policy": "shared",
    "registry_id": null,
    "interactive": false,
    "tty": false
}
GET
/v1/containers/{container_ident}/get_archive

从容器获取归档文件

获取容器文件系统中的资源 tar 归档文件。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

source_path

查询

字符串

从容器获取归档文件时容器中的文件路径。

响应

名称

入参

类型

描述

data

body

字符串

从容器获取或放入容器的 tar 文件的内容。

stat

body

字符串

执行 get_archive 时的状态信息。

响应示例

{
    "stat": {
        "linkTarget": "",
        "size": 129,
        "mode": 493,
        "name": "ip.sh",
        "mtime": "2017-07-25T18:54:50-07:00"
    },
    "data": "ARCHIVE FILE DATA"
}
POST
/v1/containers/{container_ident}/put_archive

将归档文件放入容器

上传要提取到容器文件系统路径中的 tar 归档文件。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

destination_path

查询

字符串

将归档文件放入容器时容器中的目标路径。

data

body

字符串

从容器获取或放入容器的 tar 文件的内容。

请求示例

{
    "data": "ARCHIVE FILE DATA"
}

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/add_securtiy_group

为指定的容器添加安全组

为指定的容器添加安全组。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

security_group

查询

字符串

要添加到容器的安全组。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/commit

提交容器

从容器的更改创建新镜像。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

repository

查询

字符串

容器镜像的仓库。

tag

查询

字符串

容器镜像的标签。

响应

名称

入参

类型

描述

image

body

字符串

镜像的名称或 ID。

响应示例

{
    "uuid": "64281d85-e9a3-4c54-8d30-9ee72a596d8a"
}
GET
/v1/containers/{container_ident}/attach

附加到容器

附加到正在运行的容器。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

响应

此请求返回 websocket url 作为响应,该响应不是 json 格式。

POST
/v1/containers/{container_ident}/network_detach

从容器分离网络

从容器分离网络。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

network (可选)

查询

字符串

要附加到容器的网络 ID 或名称。

端口 (可选)

查询

字符串

要绑定到容器的端口的 ID 或名称。 networkport 参数互斥。 如果您没有指定 port 参数,Zun 将分配一个端口并将该端口绑定到容器。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/resize

调整容器大小

调整容器的 TTY 大小

警告

此 API 主要设计用于由 zunclient 或 Zun-UI 使用。 此 API 的目的是在客户端工具和 Zun 之间协调,以调整容器的 TTY 大小。 除非您正在编写客户端工具,否则不应使用此 API。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

width

查询

字符串

容器的 TTY 宽度。

height

查询

字符串

容器的 TTY 高度。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/network_attach

将网络附加到容器

将网络附加到容器。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

network (可选)

查询

字符串

要附加到容器的网络 ID 或名称。

端口 (可选)

查询

字符串

要绑定到容器的端口的 ID 或名称。 networkport 参数互斥。 如果您没有指定 port 参数,Zun 将分配一个端口并将该端口绑定到容器。

fixed_ip (可选)

查询

字符串

固定 IP 地址。 如果您在没有 network 的情况下请求特定的固定 IP 地址,则请求将返回错误请求 (400) 响应代码。

响应

此请求不在响应主体中返回任何内容。

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

POST
/v1/containers/{container_ident}/execute

在正在运行的容器中执行命令

在正在运行的容器中执行命令。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

command

查询

字符串

要在容器中执行的命令。

run (可选)

查询

布尔值

是否运行该命令。 如果将此参数设置为 true,Zun 将立即运行该命令。 如果将此参数设置为 false,Zun 将不会运行该命令,而是返回必要的信息(即 URL 和执行 ID)供用户触发命令的执行。

interactive (可选)

查询

布尔值

即使未附加,也要保持 STDIN 处于打开状态,分配一个伪 TTY。

响应

名称

入参

类型

描述

output (可选)

body

dict

在容器中执行的命令的输出。

exit_code (可选)

body

dict

在容器中执行的命令的退出代码。

exec_id (可选)

body

dict

exec 实例的 ID。

url (可选)

body

dict

启动 exec 实例的 URL。

注意

如果 run 参数设置为 true,则输出将为 {“output”: “…”、“exit_code”: “…”、“exec_id”: None、“url”: None}。 否则,输出将为 {“output”: None、“exit_code”: None、“exec_id”: “…”、“url”: “…”}。

响应示例

{
    "output": "Mon Oct  9 09:09:32 UTC 2017\n",
    "exit_code": 0,
    "exec_id": null,
    "url": null
}
{
    "output": null,
    "exit_code": null,
    "url": "tcp://172.16.1.45:2375",
    "exec_id": "3c851c568fc9f21bdb77b7ba98eb1c6ae0c901f56dfb1471de4d6af7c73dbf4d"
}
POST
/v1/containers/{container_ident}/execute_resize

在执行容器中的命令时调整 TTY 大小

在执行容器中的命令时调整 TTY 大小。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

height

查询

字符串

容器的 TTY 高度。

exec_id

查询

字符串

exec 实例的 ID。

width

查询

字符串

容器的 TTY 宽度。

响应

名称

入参

类型

描述

exec_resize_output (可选)

body

数组

exec_resize 的输出,包括 exec_id 和 websocket url。

响应示例

{
    "exec_id": "c75e81815181bb22558306fffcaa7d049f4a79378ea70802ee6c4334d0597860",
    "url": "ws://0.0.0.0:6784/?token=062411f1-7995-413b-988f-ba8f6c553c6c&uuid=b7074d3a-14e4-4d5a-95cc-579fef16e033"
}
GET
/v1/containers/{container_ident}/logs

获取容器日志

获取容器日志。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

timestamps (可选)

查询

布尔值

是否在容器的日志中显示时间戳。

tail (可选)

查询

字符串

从日志末尾显示多少行,默认是获取所有日志。

stderr (可选)

查询

布尔值

如果为 True,则获取标准错误。

stdout (可选)

查询

布尔值

如果为 True,则获取标准输出。

since (可选)

查询

字符串

从给定的日期时间或整数纪元(以秒为单位)开始显示日志。

请求示例

{
    "timestamps": "True",
    "tail": "all",
    "since": "600000",
    "stderr": "True",
    "stdout": "True"
}

响应

此请求以字符串形式返回日志,该格式不是 JSON 格式。

GET
/v1/containers/{container_ident}/top

显示容器中正在运行的进程

显示容器中正在运行的进程。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

ps_args (可选)

查询

字符串

ps 命令的参数。

响应

名称

入参

类型

描述

ps_output

body

dict

zun top 的输出。

响应示例

{
    "Processes": [
        ["root", "28363", "28344", "0", "Sep28", "pts/0", "00:00:00", "nginx: master process nginx -g daemon off;"],
        ["systemd+", "28436", "28363", "0", "Sep28", "pts/0", "00:00:00", "nginx: worker process"]
    ],
    "Titles": [
        "UID",
        "PID",
        "PPID",
        "C",
        "STIME",
        "TTY",
        "TIME",
        "CMD"
    ]
}
GET
/v1/containers/{container_ident}/network_list

列出容器上的网络

列出容器上的网络

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

响应

名称

入参

类型

描述

net_id

body

字符串

网络的 UUID。

subnet_id

body

字符串

子网的 UUID。

port_id

body

字符串

容器的端口的 UUID。

版本

body

字符串

互联网协议的版本。

ip_address

body

字符串

IP 地址。

fixed_ips

body

字符串

包含子网 ID 和其他详细信息的固定 IP 地址列表。

响应示例

{
    "networks": [
        {
            "port_id": "5be06e49-70dc-4984-94a2-1b946bb136fb",
            "net_id": "7e6b5e1b-9b44-4f55-b4e3-16a1ead98161",
            "fixed_ips": {
                "ip_address": "30.30.30.10",
                "version": 4,
                "subnet_id": "ae8d7cce-859e-432f-8a33-d7d8834ccd14"
            }
        }
    ]
}
GET
/v1/containers/{container_ident}/container_actions

列出容器的操作

列出容器的操作。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

响应

名称

入参

类型

描述

动作

body

字符串

操作的名称。

container_uuid

body

UUID

资源的 UUID。

message

body

字符串

发生错误时关于此操作的错误消息。

request_id

body

字符串

执行此操作的 API 生成的请求 ID。

start_time

body

字符串

操作开始的日期和时间。 日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

project_id

body

字符串

容器所属的项目 UUID。

user_id

body

字符串

拥有容器的用户的用户 ID。

示例列出容器的操作:JSON 响应

{
    "containerActions": [
        {
            "action": "create",
            "container_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13",
            "message": null,
            "project_id": "853719b303ef4858a195535eb520e58d",
            "request_id": "req-25517360-b757-47d3-be45-0e8d2a01b36a",
            "start_time": "2018-03-04T19:48:49.000000",
            "finish_time": "2018-03-04T19:48:55.000000",
            "user_id": "22e81669093742b7a74b1d715a9a5813"
        },
        {
            "action": "stop",
            "container_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13",
            "message": null,
            "project_id": "853719b303ef4858a195535eb520e58d",
            "request_id": "req-3293a3f1-b44c-4609-b8d2-d81b105636b8",
            "start_time": "2018-03-04T17:02:54.000000",
            "finish_time": "2018-03-04T17:02:58.000000",
            "user_id": "22e81669093742b7a74b1d715a9a5813"
        }
    ]
}
GET
/v1/containers/{container_ident}/container_actions/{request_ident}

显示容器操作详细信息

显示容器操作的详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

container_ident

路径

字符串

Zun 中容器的 UUID 或名称。

request_ident

路径

字符串

请求的 ID。

响应

名称

入参

类型

描述

动作

body

字符串

操作的名称。

container_uuid

body

UUID

资源的 UUID。

message

body

字符串

发生错误时关于此操作的错误消息。

project_id

body

字符串

容器所属的项目 UUID。

request_id

body

字符串

执行此操作的 API 生成的请求 ID。

start_time

body

字符串

操作开始的日期和时间。 日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

user_id

body

字符串

拥有容器的用户的用户 ID。

events

body

数组

此操作中发生事件。

events.event

body

字符串

事件的名称。

events.start_time

body

字符串

事件开始的日期和时间。 日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

events.finish_time

body

字符串

事件完成的日期和时间。 日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

events.result

body

字符串

事件的结果。

events.traceback

body

字符串

如果在此事件中发生错误,则为堆栈跟踪。

示例显示容器操作详细信息:JSON 响应

{
    "action": "create",
    "events": [
        {
          "event": "container__do_container_start",
          "finish_time": "2018-03-04T17:03:07.000000",
          "result": "Success",
          "start_time": "2018-03-04T17:02:57.000000",
          "traceback": null
        }
    ],
    "container_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13",
    "message": null,
    "project_id": "853719b303ef4858a195535eb520e58d",
    "request_id": "req-3293a3f1-b44c-4609-b8d2-d81b105636b8",
    "start_time": "2018-03-04T17:02:54.000000",
    "finish_time": "2018-03-04T17:02:57.000000",
    "user_id": "22e81669093742b7a74b1d715a9a5813"
}

管理 Zun 服务

GET
/v1/services

显示服务状态

使管理员能够查看所有 Zun 服务的详细信息。

服务状态详细信息包括服务 ID、二进制文件、主机、报告计数、创建时间、上次更新时间、运行状况状态以及禁用服务的理由。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

services

body

数组

Zun 服务的列表。

binary

body

字符串

Zun 服务的二进制形式的名称。

availability_zone

body

字符串

Zun 服务的可用区。

created_at

body

字符串

创建资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

state

body

字符串

Zun 服务的当前状态。

report_count

body

整数

报告的总数。

updated_at

body

字符串

更新资源的时间和日期。

日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含,±hh:mm 值是 UTC 的时区偏移量。在前面的示例中,偏移量值为 -05:00

如果未设置 updated_at 日期和时间戳,则其值为 null

host

body

字符串

服务的宿主机。

disabled_reason

body

字符串

服务的禁用原因,如果服务已启用或禁用且未提供原因,则为 null

id

body

字符串

Zun 服务的 ID。

响应示例

{
    "services":[
        {
            "binary": "zun-compute",
            "availability_zone": "nova",
            "state": "up",
            "created_at": "2017-02-01T03:25:07.000000",
            "updated_at": "2017-02-01T06:13:07.000000",
            "report_count": 166,
            "disabled": false,
            "host": "instance-1",
            "forced_down": false,
            "last_seen_up": "2017-02-01T06:13:07.000000",
            "disabled_reason": null,
            "id": 1
        }
    ]
}
DELETE
/v1/services

删除服务

删除指定的 Zun 服务。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

binary

body

字符串

Zun 服务的二进制形式的名称。

host

body

字符串

服务的宿主机。

响应参数

如果成功,此方法不会在响应主体中返回任何内容。

PUT
/v1/services/enable

启用服务

启用指定的 Zun 服务。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

binary

body

字符串

Zun 服务的二进制形式的名称。

host

body

字符串

服务的宿主机。

响应参数

名称

入参

类型

描述

服务

body

dict

Zun 服务。

host

body

字符串

服务的宿主机。

binary

body

字符串

Zun 服务的二进制形式的名称。

disabled

body

布尔值

此服务是否被禁用。

disabled_reason

body

字符串

服务的禁用原因,如果服务已启用或禁用且未提供原因,则为 null

响应示例

{
    "service":{
        "disabled": false,
         "binary": "zun-compute",
         "host": "tecs",
         "disabled_reason": null
    }
}
PUT
/v1/services/disable

禁用服务

禁用指定的 Zun 服务。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

binary

body

字符串

Zun 服务的二进制形式的名称。

host

body

字符串

服务的宿主机。

disabled_reason

body

字符串

服务的禁用原因,如果服务已启用或禁用且未提供原因,则为 null

响应参数

名称

入参

类型

描述

服务

body

dict

Zun 服务。

host

body

字符串

服务的宿主机。

binary

body

字符串

Zun 服务的二进制形式的名称。

disabled

body

布尔值

此服务是否被禁用。

disabled_reason

body

字符串

服务的禁用原因,如果服务已启用或禁用且未提供原因,则为 null

响应示例

{
    "service": {
        "disabled": true,
        "binary": "zun-compute",
        "host": "host1",
        "disabled_reason": "abc"
    }
}
PUT
/v1/services/force_down

强制服务下线

强制指定的 Zun 服务下线或取消设置。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

binary

body

字符串

Zun 服务的二进制形式的名称。

host

body

字符串

服务的宿主机。

forced_down

body

布尔值

此服务是否由管理员手动强制下线。 此值对于了解第三方已验证服务应标记为下线很有用。

响应参数

名称

入参

类型

描述

服务

body

dict

Zun 服务。

host

body

字符串

服务的宿主机。

binary

body

字符串

Zun 服务的二进制形式的名称。

forced_down

body

布尔值

此服务是否由管理员手动强制下线。 此值对于了解第三方已验证服务应标记为下线很有用。

响应示例

{
    "service": {
        "binary": "zun-compute",
        "host": "tecs",
        "forced_down": true
    }
}

管理 zun 主机

GET
/v1/hosts

列出所有计算主机

使管理员能够列出所有 Zun 容器主机。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

hosts

body

数组

主机信息列表,包括主机名、uuid、链接、标签、cpus、mem_total 和 os。

architecture

body

字符串

主机操作系统的体系结构。

cpus

body

字符串

主机的总 CPU 数量。

cpu_used

body

字符串

主机使用的 CPU 数量。

disk_used

body

字符串

主机使用的磁盘量。

disk_total

body

字符串

主机的总磁盘量。

hostname

body

字符串

主机名。

kernel_version

body

字符串

主机的内核版本。

labels

body

字符串

本地容器引擎(例如 Docker 守护程序)的标签。

mem_used

body

字符串

主机使用的内存量。

mem_total

body

字符串

主机的总内存量。

os

body

字符串

主机操作系统的名称。

os_type

body

字符串

主机操作系统的类型。

total_containers

body

字符串

主机中的容器总数。

uuid

body

字符串

主机的 UUID。

enable_cpu_pinning

body

对象

指示此主机是否启用了 CPU 固定。

响应示例

{
    "hosts": [
        {
            "hostname": "testhost",
            "uuid": "d0405f06-101e-4340-8735-d1bf9fa8b8ad",
            "links": [{
                "href": "http://192.168.2.200:9517/v1/hosts/d0405f06-101e-4340-8735-d1bf9fa8b8ad",
                "rel": "self"
                },
                {"href": "http://192.168.2.200:9517/hosts/d0405f06-101e-4340-8735-d1bf9fa8b8ad",
                 "rel": "bookmark"
                }
            ],
            "kernel_version": "4.4.0-109-generic",
            "labels": {
                "type": "test"
            },
            "cpus": 48,
            "mem_used": 512,
            "disk_total": 16,
            "mem_total": 128446,
            "total_containers": 2,
            "cpu_used": 0.2,
            "disk_used": 10,
            "os_type": "linux",
            "architecture": "x86_64"
            "os": "CentOS Linux 7 (Core)"
        }
   ],
   "next": null
}
GET
/v1/hosts/{host_ident}

显示主机的详细信息

获取 Zun 中主机的所有信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求

名称

入参

类型

描述

host_ident

路径

字符串

Zun 中主机的 UUID 或名称。

响应

名称

入参

类型

描述

architecture

body

字符串

主机操作系统的体系结构。

cpus

body

字符串

主机的总 CPU 数量。

cpu_used

body

字符串

主机使用的 CPU 数量。

disk_used

body

字符串

主机使用的磁盘量。

disk_total

body

字符串

主机的总磁盘量。

hostname

body

字符串

主机名。

kernel_version

body

字符串

主机的内核版本。

labels

body

字符串

本地容器引擎(例如 Docker 守护程序)的标签。

mem_used

body

字符串

主机使用的内存量。

mem_total

body

字符串

主机的总内存量。

os

body

字符串

主机操作系统的名称。

os_type

body

字符串

主机操作系统的类型。

total_containers

body

字符串

主机中的容器总数。

uuid

body

字符串

主机的 UUID。

enable_cpu_pinning

body

对象

指示此主机是否启用了 CPU 固定。

响应示例

{
    "hostname": "test",
    "uuid": "d0405f06-101e-4340-8735-d1bf9fa8b8ad",
    "links": [{
        "href": "http://192.168.2.22:9517/v1/hosts/d0405f06-101e-4340-8735-d1bf9fa8b8ad",
        "rel": "self"
        },
        {"href": "http://192.168.2.22:9517/hosts/d0405f06-101e-4340-8735-d1bf9fa8b8ad",
         "rel": "bookmark"}
    ],
    "kernel_version": "3.10.0-123.el7.x86_64",
    "labels": {"type": "test"},
    "cpus": 48,
    "mem_used": 512,
    "disk_total": 16,
    "mem_total": 128446,
    "total_containers": 2,
    "cpu_used": 0.2,
    "disk_used": 10,
    "os_type": "linux",
    "architecture": "x86_64"
    "os": "CentOS Linux 7 (Core)"
}

管理配额

获取、更新、获取默认值和删除项目的配额。

PUT
/v1/quotas/{project_id}

更新项目的配额

更新项目的配额

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

名称

入参

类型

描述

project_id

路径

字符串

多项目云中项目的 UUID。

containers (可选)

body

int

容器的数量

memory (可选)

body

整数

容器的内存大小,以 MiB 为单位。

cpu (可选)

body

float

虚拟 CPU 的数量。

disk (可选)

body

int

容器磁盘的千兆字节数

请求示例

{
    "disk": 200,
    "cpu": 30,
    "containers": 80,
    "memory": 102400
}

响应

名称

入参

类型

描述

containers

body

对象

详细容器配额的对象,包括已用、实例数量的限制。

memory

body

对象

详细内存配额的对象,包括已用、内存数量的限制。

cpu

body

对象

详细 CPU 集配额的对象,包括已用、CPU 集数量的限制。

disk

body

对象

详细磁盘配额的对象,包括已用、磁盘的限制。

响应示例

{
    "disk": 200,
    "cpu": 30,
    "containers": 80,
    "memory": 102400
}
GET
/v1/quotas/{project_id}

获取项目的配额

获取项目的配额

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

名称

入参

类型

描述

project_id

路径

字符串

多项目云中项目的 UUID。

响应

名称

入参

类型

描述

usages (可选)

查询

布尔值

是否在配额中显示正在使用中的资源

containers

body

对象

详细容器配额的对象,包括已用、实例数量的限制。

memory

body

对象

详细内存配额的对象,包括已用、内存数量的限制。

cpu

body

对象

详细 CPU 集配额的对象,包括已用、CPU 集数量的限制。

disk

body

对象

详细磁盘配额的对象,包括已用、磁盘的限制。

响应示例

{
    "disk": {
        "limit": 100,
        "in_use": 0
    },
    "cpu": {
        "limit": 20,
        "in_use": 4
    },
    "containers": {
        "limit": 40,
        "in_use": 5
    },
    "memory": {
        "limit": 51200,
        "in_use": 2048
    }
}
GET
/v1/quotas/{project_id}/defaults

获取项目的默认配额

获取项目的默认配额

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

名称

入参

类型

描述

project_id

路径

字符串

多项目云中项目的 UUID。

响应

名称

入参

类型

描述

usages (可选)

查询

布尔值

是否在配额中显示正在使用中的资源

containers

body

对象

详细容器配额的对象,包括已用、实例数量的限制。

memory

body

对象

详细内存配额的对象,包括已用、内存数量的限制。

cpu

body

对象

详细 CPU 集配额的对象,包括已用、CPU 集数量的限制。

disk

body

对象

详细磁盘配额的对象,包括已用、磁盘的限制。

响应示例

{
    "disk": 100,
    "cpu": 20,
    "containers": 40,
    "memory": 51200
}
DELETE
/v1/quotas/{project_id}

恢复到默认配额

将项目的配额恢复到默认值

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

名称

入参

类型

描述

project_id

路径

字符串

多项目云中项目的 UUID。

响应

成功的 DELETE 操作的响应中没有主体内容。

管理配额类

获取、更新配额类

PUT
/v1/quota_classes/{quota_class_name}

创建或更新配额类配额

更新配额类的配额。如果请求的配额类在数据库中未找到,则 API 将创建该配额类。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

名称

入参

类型

描述

quota_class_name

路径

字符串

配额类的名称

containers (可选)

body

int

容器的数量

memory (可选)

body

整数

容器的内存大小,以 MiB 为单位。

cpu (可选)

body

float

虚拟 CPU 的数量。

disk (可选)

body

int

容器磁盘的千兆字节数

请求示例

{
    "disk": 200,
    "cpu": 30,
    "containers": 50,
    "memory": 102400
}

响应

名称

入参

类型

描述

containers

body

对象

详细容器配额的对象,包括已用、实例数量的限制。

memory

body

对象

详细内存配额的对象,包括已用、内存数量的限制。

cpu

body

对象

详细 CPU 集配额的对象,包括已用、CPU 集数量的限制。

disk

body

对象

详细磁盘配额的对象,包括已用、磁盘的限制。

响应示例

{
    "disk": 200,
    "cpu": 30,
    "containers": 50,
    "memory": 102400
}
GET
/v1/quota_classes/{quota_class_name}

列出配额类配额

列出配额类配额

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求

名称

入参

类型

描述

quota_class_name

路径

字符串

配额类的名称

响应

名称

入参

类型

描述

containers

body

对象

详细容器配额的对象,包括已用、实例数量的限制。

memory

body

对象

详细内存配额的对象,包括已用、内存数量的限制。

cpu

body

对象

详细 CPU 集配额的对象,包括已用、CPU 集数量的限制。

disk

body

对象

详细磁盘配额的对象,包括已用、磁盘的限制。

响应示例

{
    "disk": 100,
    "cpu": 20,
    "containers": 40,
    "memory": 51200
}