unik的命令行-解释说明 今天药忘吃喽~ 2022-03-18 15:06 183阅读 0赞 # 学习网址:https://github.com/cf-unik/unik/blob/master/docs/cli.md # # 命令行界面 # UniK cli将调用UniK的[REST API][],使UniK变得简单。 * 管理Unik * [`unik daemon`][unik daemon] * [`unik target`][unik target] * [`unik providers`][unik providers] * [`unik compilers`][unik compilers] * 图片 * [`unik build`][unik build] * [`unik images`][unik images] * [`unik describe-image`][unik describe-image] * [`unik delete-image`][unik delete-image] * 实例 * [`unik run`][unik run] * [`unik instances`][unik instances] * [`unik describe-instance`][unik describe-instance] * [`unik delete-instance`][unik delete-instance] * [`unik stop`][unik stop] * [`unik start`][unik start] * [`unik logs`][unik logs] * 卷 * [`unik create-volume`][unik create-volume] * [`unik volumes`][unik volumes] * [`unik attach-volume`][unik attach-volume] * [`unik detach-volume`][unik detach-volume] * [`unik delete-volume`][unik delete-volume] * Unik Hub * [`unik login`][unik login] * [`unik push`][unik push] * [`unik pull`][unik pull] * [`unik search`][unik search] #### 运行守护进程 #### cli用于启动UniK守护进程。启动守护进程: unik daemon 建议启动守护进程作为后台进程,`&`因为它被设计为长时间运行。 `unik daemon` 使用以下标志: * `--debug` (bool,可选)守护进程的详细日志记录 * `--f string` (字符串,可选)路径到[守护程序配置文件][Link 1](默认为$ HOME / .unik / daemon-config.yaml) * `--logfile string` (字符串,可选)输出日志到文件(除了stdout) * `--port int` (int,可选)守护进程监听端口(默认为3000) * `--trace` (bool,可选)将堆栈跟踪添加到[守护程序][Link 2]日志中 使用示例 unik daemon --f ./my-config.yaml --port 12345 --debug --trace --logfile logs.txt * 将使用my-config.yaml中的配置文件启动守护程序 * 运行在端口12345 * 调试模式激活 * 跟踪模式激活 * 将日志输出到logs.txt -------------------- #### 定位UniK守护进程 #### 跑 unik target --host localhost 如果在本地机器上运行UniK。除此以外 unik target --host host_address [--port port] 将目标设置为远程UniK主机。使用该`port`标志是可选的,只有`daemon`在非默认(3000)端口上运行时才需要使用该标志 。 注意:客户端命令(非命令`unik daemon`)的目标可以用`--host`标志覆盖(使用除默认值之外的目标)。 -------------------- #### 列出可用的供应商 #### unik providers 返回可用于目标unik后端的提供商列表。 -------------------- #### 列出可用的编译器 #### unik compilers 返回可用于目标unik后端的编译器列表。 -------------------- #### 建立形象 #### 将源文件编译成可运行的unikernel映像。 必须使用特定的编译器编译图像。编译器由3个元素组成: * 基础:Unikernel Base来构建映像。这些包括不同的unikernel实现,如[rumprun][],[IncludeOS][]等。 * 语言:应该使用图像构建的语言/运行时。一个golang项目例如指定`-language go`。支持的语言取决于unikernel基础。 * 提供者:(云/虚拟机管理程序)提供者应构建映像。支持的提供程序取决于unikernel基础。 为了查看所有支持的基本/语言/提供者组合的列表,请运行 `unik compilers` 必须为特定供应商编写图像,并使用`--provider`标志指定要查看可用提供程序的列表,请运行`unik providers` 必须使用`--base`标志指定与提供程序兼容的unikernel基础。 必须使用该`--language`标志指定与基础兼容的语言运行时。 要查看所有兼容的基本语言 - 提供程序组合的表,请运行 `unik compilers` 如果您希望将卷附加到图像的实例上,则必须事先编译图像并列出预期的挂载点。例如,对于从“/ data”文件夹读取的应用程序,unikernel应该使用该标志进行编译`--mount /data` 必须在编译时指定要传递给unikernel的运行时参数。您可以将参数指定为传递给该`--args`标志的单个字符串 图像名称必须是唯一的。如果图像存在相同名称,则可以使用--force标志强制覆盖 使用示例 unik build --name myUnikernel --path ./myApp/src --base rump --language go --provider aws --mountpoint /foo --mountpoint /bar --args 'arg1 arg2 arg3' --force * 将使用./myApp/src中找到的源创建一个名为myUnikernel的Go unikernel, * 使用针对AWS基础架构的rumprun编译, * 期望在运行时在/ foo上安装一个卷, * 期待另一个卷在运行时挂载在/ bar, * 在应用程序运行时将“arg1 arg2 arg3”作为参数传递, * 并在编译之前删除名称myUnikernel的任何先前存在的实例和映像 另一个例子(仅使用必需的参数): unik build -name anotherUnikernel -path ./anotherApp/src --base includeos --language cpp --provider virtualbox 用法:unik build \[flags\] 标志: * `--args string` (字符串,可选)在运行时传递到unikernel * `--base string` (string,required)要使用的unikernel基址的名称 * `--force` (bool,可选)强制使用此名称覆盖以前存在的图像 * `--language string` (string,required)目标语言来构建源代码 * `--mountpoint value` (字符串,重复)最多为卷指定8个安装点(默认值为\[\]) * `--name string` (string,required)命名为unikernel。必须是独一无二的 * `--path string` (字符串,必需)路径到根应用程序源文件夹 * `--provider string` (string,required)要编译的目标基础架构的名称 * `--no-cleanup` (bool,可选)告诉UniK如果构建失败,不要从构建过程清除任何工件。用于调试目的。 -------------------- #### 列出可用的图像 #### unik images 列出提供商所有可用的unikernel图像。包括运行和管理实例的重要信息,包括[图像所][Link 3]需的安装点。 -------------------- #### 获取特定图像的JSON表示形式: #### unik describe-image --image IMAGE_NAME -------------------- #### 删除图像 #### unik delete-image --image IMAGE_NAME 使用`--force`强制删除unikernel如果这个图像的任何实例当前正在运行的相关情况。 -------------------- #### 运行一个实例 #### unik run --instanceName INSTANCE_NAME --imageName IMAGE_TO_USE 从unik编译的unikernel磁盘映像中部署运行的实例。该实例将部署在该图像编译的提供程序上。例如,如果图像是为virtualbox编译的,unik将尝试在配置的虚拟机环境中部署映像。 “unik run”需要一个unik管理的卷(请参见“unik卷”和“unik创建卷”),并附加到图像编译时指定的每个安装点。这意味着如果图像是使用两个装载点,/ data1和/ data2进行编译的,那么'unik run'需要在运行时将2个可用卷附加到实例上,这些卷必须用标记--vol SOME\_VOLUME\_NAME:/ data1 --vol ANOTHER\_VOLUME\_NAME:/ data2如果图像不需要安装点,则无法附加卷。 环境变量可以通过使用-env标志在运行时设置。 使用示例 unik run --instanceName newInstance --imageName myImage --vol myVol:/mount1 --vol yourVol:/mount2 --env foo=bar --env another=one --memory 1234 * 将在供应商环境myImage编译并创建myImage的一个实例 * 实例将被命名为newInstance * 实例将尝试将unik管理的卷myVol安装到/ mount1 * 实例将尝试将unik管理的卷yourVol挂载到/ mount2 * 实例将使用env变量`foo`设置为引导`bar` * 实例将使用env变量`another`设置为引导`one` * 实例将获得1234 MB的内存 * 注意,运行必须采取恰好一个--vol参数每个安装在图像规范中定义点 标志: * `--env value` (字符串,重复)为实例设置任意数量的环境变量。必须格式为KEY = VALUE(默认\[\]) * `--imageName string` (string,required)要使用的图像 * `--instanceName string` (string,required)给出实例的名称。必须是独一无二的 * `--vol value` (字符串,重复)每个--vol标志指定一个卷ID和相应的装载点,以在引导时附加到该实例。卷必须附加到图像预期的每个安装点的实例。运行'unik image(image\_name)'来查看图像所需的安装点。以“volume\_id:mount\_point”格式指定(默认值为\[\]) * `--instanceMemory` (int,可选)指定给实例的内存量(以MB为单位)。如果没有给出,则将使用提供程序默认值 * `--no-cleanup` (bool,可选)告诉UniK如果启动失败,不要从启动实例进程清除任何工件。用于调试目的。 * `--debug-mode` (bool,可选)以Debug模式运行实例,因此可以附加GDB。目前仅支持QEMU提供商 -------------------- #### 列出可用实例 #### unik instances 列出提供程序中所有可用的unikernel实例。 -------------------- #### 获取specifig实例的JSON表示形式: #### unik describe-instance --instance INSTANCE_NAME -------------------- #### 删除一个实例 #### unik delete-instance --instance INSTANCE_NAME 使用`--force`强制删除被通电的情况下 -------------------- #### 关闭实例 #### unik stop --instance INSTANCE_NAME 在实例创建之后关闭实例是关闭或分离卷的必要步骤。 -------------------- #### 开启实例 #### unik start --instance INSTANCE_NAME -------------------- #### 检索或跟踪实例日志 #### unik logs --instance INSTANCE_NAME 从正在运行的unikernel实例检索日志。 无法在关闭状态的实例上使用。使用`--follow`标志附加到实例的stdout `--delete`与`--follow`实例的HTTP连接中断(通过客户端断开连接)结合使用强制自动实例删除。该`--delete`标志通常用于与编排软件(如可能需要持久的http连接管理实例的集群管理器)一起使用。 使用示例 unik logs --instance myInstance * 从引导时起将从myInstance返回捕获的stdout unik logs --instance myInstance --follow --delete * 将打开cli和unik后端之间的http连接,将stdout从实例流向客户端 * 当客户端断开连接(即使用Ctrl + C)时,unik将自动关闭电源并终止该实例 -------------------- ##### 创建卷 ##### unik create-volume 创建一个可以连接到unik管理的实例并从其分离的数据卷。 卷可以从目录创建,这将将目录的内容复制到卷上。也可以创建空卷。 在删除实例后,卷将持续存在,允许应用程序数据在单个实例的生命周期之外持久化。 如果指定[数据文件夹][Link 4](使用--data),则不需要指定卷的大小。UniK会自动调整音量以适应所提供的数据。可以使用--size标志来请求更大的音量。 如果没有提供数据目录,则--size是指定要创建的空卷所需大小的必需参数。 为特定提供者创建卷,并使用--provider标志指定。卷只能附加到同一提供者类型的实例。要查看可用提供商的列表,请运行'unik providers' 卷名必须是唯一的。如果卷的名称相同,则在创建新卷之前,您将需要使用'unik delete-volume'删除卷。 \--size参数使用MB 示例用法:unik create-volume --name myVolume --data ./myApp/data --provider aws * 将使用./myApp/src中的数据创建名为myVolume的EBS支持的AWS卷, * 如果卷的大小较大,则大小将为1GB(AWS上的默认最小大小)或更大 另一个例子(空卷):unik create-volume -name anotherVolume --size 500 -provider vsphere * 将创建一个500mb稀疏的vmdk文件,并将其上传到vsphere数据存储,其中可以将其附加到vsphere实例 标志: * `--size int` (int,special)大小以MB创建卷。如果提供了--data,则为可选项 * `--data string` (字符串,特殊)路径到数据文件夹。如果提供了--size可选 * `--name string` (string,required)命名为unikernel。必须是独一无二的 * `--provider string` (string,required)要编译的目标基础架构的名称 * `--no-cleanup` (bool,可选)告诉UniK如果构建失败,不要从构建过程清除任何工件。用于调试目的。 -------------------- ##### 列出卷 ##### unik volumes 列出供应商中所有可用的unik管理卷。 `ATTACHED-INSTANCE`给出卷附加到的实例的实例ID(如果有)。只有没有附件的卷可以附加到实例。 -------------------- ##### 附加卷 ##### unik attach-volume --instance INSTANCE_ID --volume VOLUME_ID --mountPoint MOUNT_POINT 将卷附加到指定装载点处的已停止实例。您可以按名称或ID指定卷。 卷必须附加到实例上的可用安装点。安装点是图像特定的,并且在图像被编译时确定。 有关此实例的映像上的安装点的列表,请运行`unik images`或 `unik describe image` 如果指定的安装点被另一个卷占用,则该命令将导致错误 标志: * `--force` (bool,可选)在运行的情况下强制删除卷 * `--instance string` (string,required)要附加的实例的名称或ID。unik接受名称或ID的前缀 * `--mountPoint string` (字符串,必需)卷的安装路径。这应该反映图像上指定的映射。运行'unik描述图像'以查看图像的预期安装点 * `--volume string` (string,required)要附加的卷的名称或ID。unik接受名称或ID的前缀 -------------------- ##### 分离卷 ##### unik detach-volume --volume VOLUME_ID 将卷分解到指定装入点处的已停止实例。您可以按名称或ID指定卷。 拆卸卷后,卷可以安装到另一个实例。 如果实例未停止,则分离将导致错误。 别名:detach-volume,detach 标志: * `--volume string` (string,required)要分离的卷的名称或ID。unik接受名称或ID的前缀 -------------------- ##### 删除卷 ##### unik delete-volume --volume VOLUME_NAME [--force] * `--force` 如果当前附加的话,则在删除之前分离卷。 -------------------- ##### 登录 ##### unik login * 登录到Unik Repository来拉和推图像 * 这实际上不会进行身份验证(因为Unik Hubs是无状态的),而是将客户端配置设置为 `~/.unik/hub-config.yaml` -------------------- ##### 推 ##### unik push --image myImage * 将编译的映像从本地提供程序(Xen,Virtualbox或QEMU)推送到支持S3的Hub Repository -------------------- ##### 拉 ##### unik pull --image myImage --provider virtualbox|qemu|xen * 将已编译的映像从S3支持的Hub Repository拉到本地提供程序(Xen,Virtualbox或QEMU)到支持S3的Hub Repository * 提供者指定图像指定的体系结构。 -------------------- ##### 搜索 ##### unik search [image_name] * 搜索可用的图像。可选过滤器`image_name` [REST API]: https://github.com/cf-unik/unik/blob/master/docs/api.md [unik daemon]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#running-the-daemon [unik target]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#targeting-the-unik-daemon [unik providers]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#list-available-providers [unik compilers]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#list-available-compilers [unik build]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#building-an-image [unik images]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#list-available-images [unik describe-image]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#get-json-representation-of-a-specifig-image [unik delete-image]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#delete-an-image [unik run]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#run-an-instance [unik instances]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#list-available-instances [unik describe-instance]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#get-json-representation-of-a-specifig-instance [unik delete-instance]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#delete-an-instance [unik stop]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#power-off-an-instance [unik start]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#power-on-an-instance [unik logs]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#retrieve-or-follow-instance-logs [unik create-volume]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#create-a-volume [unik volumes]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#list-volumes [unik attach-volume]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#attach-a-volume [unik detach-volume]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#detach-a-volume [unik delete-volume]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#delete-a-volume [unik login]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#login [unik push]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#push [unik pull]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#pull [unik search]: https://github.com/cf-unik/unik/blob/master/docs/cli.md#search [Link 1]: https://github.com/cf-unik/unik/blob/master/docs/configure.md [Link 2]: https://www.baidu.com/s?wd=%E5%AE%88%E6%8A%A4%E7%A8%8B%E5%BA%8F&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd [rumprun]: https://github.com/rumpkernel/rumprun [IncludeOS]: https://gitter.im/hioa-cs/IncludeOS [Link 3]: https://www.baidu.com/s?wd=%E5%9B%BE%E5%83%8F%E6%89%80&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd [Link 4]: https://www.baidu.com/s?wd=%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E5%A4%B9&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd
还没有评论,来说两句吧...