cornus serve
运行 cornus 服务器: OCI 镜像仓库、构建引擎和部署引擎全部位于一个进程中。
概要
cornus serve [flags]说明
cornus serve 启动统一 HTTP 服务器,托管 /v2/* (OCI 镜像仓库) 和 /.cornus/v1/* (构建、部署、exec 和 tunnel 端点) 。它会监听至被中断 (Ctrl-C 或 SIGTERM) 。
镜像仓库 blob 和 manifest 经 --storage 所选存储后端持久化;未设置时,存储位于数据目录下。支持的 URL 形式参见存储后端。
监听地址与暴露范围
cornus serve 默认绑定 :5000,即全部网络接口。
这是有意为之。工作负载会反向连接服务器: 容器化的 caretaker 为客户端本地挂载、客户端侧 egress、凭据投递和工作负载遥测向服务器发起连接。宿主机的 127.0.0.1 并不是容器的那一个,因此仅绑定回环地址会让上述功能全部无法连接。只要工作负载需要访问服务器,就请保留默认值。
该 API 默认无认证
Cornus 除非你显式配置认证,否则是无认证的,而它能够构建镜像、部署工作负载并对其执行 exec。绑定到全部网络接口时,这些能力对任何能路由到该端口的一方都是可用的。在把服务器暴露到你所信任的网络之外以前,请先启用认证 — 绑定范围与认证应当作为同一个决定。
若要把服务器限制在本机,请显式声明:
cornus serve --addr 127.0.0.1:5000 # 仅本机
cornus serve --addr 10.0.0.5:5000 # 仅某一个网络接口CORNUS_ADDR 的作用相同。只有在工作负载不需要访问服务器时,收紧绑定范围才是合适的 — 即不使用客户端本地挂载、客户端侧 egress、凭据投递和工作负载遥测。服务器仅绑定回环地址时会在启动日志中说明,因此该限制是可见的,而不是让对端遇到莫名其妙的超时。
运行在容器内的服务器必须绑定全部网络接口: 容器若绑定自身的回环地址,发布出去的端口 (docker run -p、Service) 将无法到达。已发布的容器镜像以及 Kubernetes 清单 / Helm chart 都显式传入了 --addr :5000;如果你覆盖镜像的命令,请保留该 flag。容器内的服务器若仍然绑定了回环地址,启动时会记录一条警告。
同时设置 --tls-cert 和 --tls-key 时,服务器使用 HTTPS。添加 --tls-client-ca 会启用 mutual TLS: 经过验证的 client certificate 的 CommonName 成为调用方 identity,同时 client certificate 仍为可选。参见安全与认证。
服务器支持的完整环境变量列表参见服务器环境变量。
Flag
| Flag | Env var | 默认值 | 说明 |
|---|---|---|---|
--addr | CORNUS_ADDR | :5000 | /v2/* 和 /.cornus/v1/* 的 HTTP 监听地址。默认监听全部网络接口 — 因为容器化的 caretaker 会反向连接服务器。若要限制在本机,请传入 --addr 127.0.0.1:5000。参见 监听地址与暴露范围。 |
--rootless | CORNUS_ROOTLESS | false | 以 rootless 模式 (user namespace) 运行构建引擎。 |
--storage | CORNUS_STORAGE | 数据目录 | 镜像仓库持久化后端: 路径、file://、mem:// 或 s3://bucket?region=&endpoint=&path_style=。参见存储后端。 |
--otel | CORNUS_OTEL | false | 通过标准 OTEL_* 环境变量启用 OpenTelemetry (trace/metric/log) 。设置任意 OTEL_* exporter/endpoint 环境变量时也会隐式启用。 |
--tls-cert | CORNUS_TLS_CERT | — | PEM certificate 文件;与 --tls-key 一同设置时提供 HTTPS。 |
--tls-key | CORNUS_TLS_KEY | — | PEM private-key 文件;与 --tls-cert 一同设置时提供 HTTPS。 |
--tls-client-ca | CORNUS_TLS_CLIENT_CA | — | 用于验证 client certificate (mTLS) 的 PEM CA bundle。已验证 certificate 的 CommonName 成为调用方 identity;提交 certificate 仍是可选的。 |
--file-cache | CORNUS_FILE_CACHE | false | 为不变的客户端本地挂载读取启用 server 按文件缓存。需要 --file-cache-dir。 |
--file-cache-dir | CORNUS_FILE_CACHE_DIR | — | 存放文件缓存数据的必需目录。请使用专用卷。 |
--file-cache-chunk-size | CORNUS_FILE_CACHE_CHUNK_SIZE | 1048576 | 文件缓存块大小 (bytes)。 |
--file-cache-max-bytes | CORNUS_FILE_CACHE_MAX_BYTES | 无限制 | 由垃圾回收实施的文件缓存软大小上限。 |
示例
在默认地址 (全部网络接口) 提供服务,并将数据存于数据目录:
cornus serve监听指定地址并将镜像仓库保存在内存:
cornus serve --addr :8080 --storage mem://将镜像仓库持久化至 S3 兼容存储:
cornus serve --storage 's3://my-bucket?region=us-east-1&path_style=true'使用 mutual TLS 提供 HTTPS:
cornus serve \
--tls-cert server.crt \
--tls-key server.key \
--tls-client-ca clients-ca.pem