注意
本文档适用于 Ceph 开发版本。
自定义容器服务
托管器允许使用 YAML 文件部署自定义容器。服务规范必须看起来像:
service_type: container
service_id: foo
placement:
...
spec:
image: docker.io/library/foo:latest
entrypoint: /usr/bin/foo
uid: 1000
gid: 1000
args:
- "--net=host"
- "--cpus=2"
ports:
- 8080
- 8443
envs:
- SECRET=mypassword
- PORT=8080
- PUID=1000
- PGID=1000
volume_mounts:
CONFIG_DIR: /etc/foo
bind_mounts:
- ['type=bind', 'source=lib/modules', 'destination=/lib/modules', 'ro=true']
dirs:
- CONFIG_DIR
files:
CONFIG_DIR/foo.conf:
- refresh=true
- username=xyz
- "port: 1234"
其中服务规范的属性为:
service_id
服务的唯一名称。
image
Docker 镜像的名称。
uid
在主机系统创建目录和文件时使用的 UID。
gid
在主机系统创建目录和文件时使用的 GID。
entrypoint
覆盖镜像的默认 ENTRYPOINT。
args
一个额外的 Podman/Docker 命令行参数列表。
ports
一个要打开的主机防火墙的 TCP 端口列表。
envs
一个环境变量列表。
bind_mounts
当您使用绑定挂载时,主机机器上的文件或目录source=…路径将位于/var/lib/ceph/<cluster-fsid>/<daemon-name>.
volume_mounts
当您使用卷挂载时,在主机机器的 Docker 存储目录内创建一个新目录,并且 Docker 管理/var/lib/ceph/<cluster-fsid>/<daemon-name>.
dirs
一个在/var/lib/ceph/<cluster-fsid>/<daemon-name>.
files
一个字典,其中键是文件的相对路径,值是文件内容。使用字符串时,内容必须用双引号括起来。在这种情况下,使用 '\n' 表示换行。否则将多行内容定义为一组字符串。给定的文件将创建在/var/lib/ceph/<cluster-fsid>/<daemon-name>下。dirs属性来创建它们。
init_containers
一个“初始化容器”定义的列表。初始化容器用于在主容器启动之前运行准备工作。初始化容器是可选的。可以定义一个或多个容器。
image
容器镜像的名称。如果未指定,初始化容器将继承顶级 spec 的镜像值。
entrypoint
自定义镜像的默认入口点。
entrypoint_args
将传递给入口点的参数。行为与通用
extra_entrypoint_args
field.
volume_mounts
与自定义容器 spec 的
volume_mounts
- 选择要挂载到初始化容器的卷。如果未指定,初始化容器将继承主容器的值。
envs
一个环境变量列表。
privileged
一个布尔值,指示容器是否应该以特权运行。如果未指定,初始化容器将继承主容器的值。
带有初始化容器的示例:
service_type: container
service_id: foo
placement:
...
spec:
image: quay.io/example/foosystem:latest
entrypoint: /usr/bin/foo
uid: 1000
gid: 1000
ports:
- 8889
dirs:
- CONFIG_DIR
- DATA_DIR
volume_mounts:
CONFIG_DIR: /etc/foo
DATA_DIR: /var/lib/foo
files:
CONFIG_DIR/foo.conf:
- db_path=/var/lib/foo/db
init_containers:
- image: quay.io/example/curly:howard
entrypoint: bash
entrypoint_args:
- argument: "-c"
- argument: "[ -f /var/lib/foo/db ] || curl -o /var/lib/foo/sample.dat https://foo.example.com/samples/1.dat"
volume_mounts:
DATA_DIR: /var/lib/foo
- entrypoint: /usr/bin/foo-initialize-db
entrypoint_args:
- "--option=threads=8"
- entrypoint: /usr/local/bin/import-sample-datasets.sh
entrypoint_args:
- "/var/lib/foo/sample.dat"
envs:
- FOO_SOURCE_MISSING=ignore
- FOO_CLEANUP=yes
Note
初始化容器目前实现为在服务启动之前运行的步骤,并且受启动超时的影响。
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.